,


Je bloque sur ce que j'espère sera un problème simple pour vous (histoire que je passe à autre chose ).

Petit point sur mon environnement
OS : OSX Big Sur
Framework principal : Vue (mais je ne pense pas que mon souci vienne de là)

Voici l'architecture de mon application NodeJS
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
myApp
   |nodes_modules
   |packages.json
   |src
      |... mes différents composants
   |public
      |index.html
      |support
         |bdd.csv
      |assets
         |temp1.pdf
         |temp2.pdf

Une partie de mon code permet de lire le fichier bdd.csv comme une requête SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
alasql
        .promise(`SELECT * FROM CSV('./support/bdd.csv', {separator:";"})`)
        .then((data) => {
          this.myData.data = data;
        })
        .catch((err) => console.log("Error:", err));
Une autre partie de mon code me permet de fusionner les 2 pdf:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const path1 = "./assets/temp1.pdf";
      const path2 = "./assets/temp2.pdf";
 
      let temp1Url, temp1PdfBytes = "";
      try {
        temp1Url = path1;
        temp1PdfBytes = await fetch(temp1Url).then((res) =>
          res.arrayBuffer().catch((err) => alert(err))
        );
        this.msg = "Test Merge PDF OK";
      } catch {
        this.msg = "Test Merge PDF Pas OK";
      }
 
      const temp2Url = path2;
      const temp2PdfBytes = await fetch(temp2Url).then((res) =>
        res.arrayBuffer().catch((err) => console.error(err))
      );
 
      const pdfDoc = await PDFDocument.create();
 
      const [temp1] = await pdfDoc.embedPdf(temp1PdfBytes);
      const [temp2] = await pdfDoc.embedPdf(temp2PdfBytes);
 
      const page1 = pdfDoc.addPage();
      page1.drawPage(temp1);
 
      const page2 = pdfDoc.addPage();
      page2.drawPage(temp2);
 
      const pdfBytes = await pdfDoc.save();
      var blob = await new Blob([pdfBytes], { type: "application/pdf" });
      var url = URL.createObjectURL(blob);
      window.open(url, "_blank", "nodeIntegration=no");
Important : il n'y a pas d'interaction entre ces 2 parties de codes. Elles sont justes dans le même component VUE.


Ces deux parties de code fonctionnent très bien lorsque je lance un Le but final étant de faire une appli desktop, j'utilise actuellement Electron (note : j'ai installé Electron via CLI).
Premier test : .
Une nouvelle fois, tout se déroule comme voulu : la lecture de bdd.csv et la fusion des 2 PDF.

Donc, c'est très confiant que je lance la commande Et là ... cata : seule la lecture de bdd.csv fonctionne correctement.

Après pas mal de recherche, je me suis dit que l'ajout des PDF n'était peut-être pas fait lors du build. Je décide donc de contourner le problème et de forcer au moment du build l'import du dossier assets dans mon app (je suis sous OSX) de telle manière que celui-ci et son contenu se retrouvent dans :
/Users/charlie/Dev/myApp/dist_electron/mac/myApp.app/Contents
Ceci fonctionne bien. Pensant qu'il ne me suffit plus qu'à modifier le path de mes temp dans mon code, j'ai cru pouvoir résoudre mon souci... mais "quenini".

J'ai même essayé de pointer vers un emplacement extérieur à mon app (le rép de dév par exemple). Cela ne fonctionne toujours pas. Mettre les pdf au même endroit que bdd.csv. Nada.

J'avoue être donc totalement perdu et désarmé là.


Avez-vous une idée de ce que je fais mal ?


D'avance merci de votre aide.