Partager un fichier PDF

Bonjour à tous,

J’ai une question concernant la possibilité de partage de fichier sur Flutter.

Dans mon projet, je génère un fichier PDF qui résume les réponses de l’utilisateur à un questionnaire. Il est enregistré de cette manière:

final dir = (await getApplicationDocumentsDirectory()).path;
      final pathPDF = '$dir/docDepistPDF.pdf';
      final file = File(pathPDF);
      await file.writeAsBytes(docDepistPDF.save());

pour être affiché en faisant appel plus tard avec:

   path: pathPDF

Jusque là, tout va bien, le pdf et bien créée et s’affiche.

Dans la fenêtre qui affiche le pdf, j’ai mis un IconButton avec l’espoir que ce dernier permette de partager ce pdf. J’ai essayé d’utiliser ceci:

 @override
  Widget build(BuildContext context) {
    return PDFViewerScaffold(
      appBar: AppBar(
        title: Text(
          "Resultat du dépistage",
        ),
        actions: <Widget>[
          IconButton(
            icon: Icon(Icons.ios_share),
            onPressed: () {
              Share.share(docDepistPDF);
            },
          )
        ],
      ),
      path: pathPDF,
    );
  }
}

mais le share ne fait rien du tout…

Est-ce que quelqu’un a une idée pour m’aider?

Merci à vous,
@+
Michaël.

Je n’ai jamais utilisé ce package Share mais la doc (share | Flutter Package) montre qu’il faut faire la différence entre du texte et des fichiers lors du partage.
C’est quoi exactement le contenu de ta variable docDepistPDF ?

PS: Pense à mettre en forme le code source avec le bouton dédié dans le forum, tu auras des réponses plus rapidement. Je l’ai fait pour toi sur ce message :wink:

1 « J'aime »

Salut Maxime et merci pour ta réponse.

docDepistPDF est le nom sous lequel est enregistré un fichier PDF.
Mais cette solution ne partage qu’un fichier txt avec le chemin.

J’ai déclaré ceci:
final Document docDepistPDF = Document();

J’ai ensuite construit mon document puis je l’ai enregistré:

final dir = (await getApplicationDocumentsDirectory()).path;
final pathPDF = '$dir/docDepistPDF.pdf';

J’ai finalement trouvé la solution. J’ai bien consulté la doc (share | Flutter Package). Lors de mon premier essai, cela ne fonctionnait toujours pas avec ce code:

`Share.shareFiles(['${pathPDF}/docDepistPDF.pdf']);`

(pathPDF est une variable contenant le chemin avec lequel j’ai enregistré le pdf dans la mémoire du téléphone).

Cette solution affichait la fenêtre de partage/sauvegarde du téléphone mais ne trouvait rien à partager.

J’ai trouvé la solution en n’indiquant uniquement le chemin, sans le nom du document:

Share.shareFiles(['$pathPDF']);

Ici, la fenêtre de partage/sauvegarde s’ouvre et trouve bien mon document!
:sweat_smile:

1 « J'aime »

Cool content que tu aies trouvé :slight_smile:
Vu ce que tu me décris j’ai l’impression que tu lui donnais un chemin incorrect dans lequel tu avais 2 fois le nom de fichier à la fin .

1 « J'aime »