Bonjour,
Je vais essayer d'être clair et concis.
L'objectif de mon app est de prendre un pdf, lui rajouté une image de la taille du pdf (png background transparent) pour ajouter une "saisie" d'un utilisateur , par exemple ca peut être une signature , une rectification de document ...
Environnement :
Node v17
pdfjs-dist@2.12.313
pdf-lib@1.9.0
@napi-rs/canvas@0.1.65
Petit précision pour pdfjs-dist, de base il requiert la bibli node-canvas, que j'ai switch avec @napi-rs/canvas que je trouve mieux ( plus performante).
PDF => ouverture => ajout de l'image => impression
Problème de police , gap entre les lettres plus é qui sont remplacé par des p par exemple , bref c'est l'anarchie.
Le problème auquel j'ai pensé :
Superposition d'image transparente, pour généré un pdf ca le tolère mais lors de l'impression ca peut pété en fonction des pilotes / imprimantes.
Deuxième idée : problème de police ( qui est substitué dans mon cas)
Bon bah soit on va voir autrement non ?
Solution :
Je prend le pdf je le transforme en png :
Je fusionne les deux images dans un canvas et pof je fais la conversion en pdf , tout est bon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 const page = await pdfDoc.getPage(i); const viewport = page.getViewport({ scale: 4 }); const canvas = createCanvas(viewport.width, viewport.height); const ctx = canvas.getContext("2d"); await page.render({ canvasContext: ctx, viewport }).promise;
J'imprime depuis mon poste , bah ca marche.
Je tente dans un hotFolder qui copie le document dans "l'imprimante directement".
Ca pète , code d'erreur 30902 qui a aucune signification pour l'imprimante en question (ricoh "300 je crois").
On a passé dans la moulinette adoble pro analyse qui lâche que la syntaxe est bonne.
La je sèche, pour moi un png en pdf :
Ca devrait pas pété , ca reste qu'une image dans un pdf .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 const image = await outputPdf.embedPng(imageBuffer); const pdfPage = outputPdf.addPage([width, height]);
Si quelqu'un à une idée ou une information à m'apprendre je suis preneur, le problème est entre la chaise et le clavier mais ou exactement
Parce que la jdis pas le pdf est imprimé n'importe comment ca donne "une piste" mais là.
J'ai tenté de passé par stirling pdf / ilovePdf , ca me génère n'importe quoi ( image to pdf).
Merci d'avance
EDIT :
Impression serveur d'impression diffère d'une impression manuelle d'un pdf ?
Partager