J'écris une application Java qui crée un pdf à partir de zéro en utilisant la bibliothèque pdfbox.
Je dois placer une image jpg dans l'une des pages.
J'utilise ce code:
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
/* ... */
/* code to add some text to the page */
/* ... */
InputStream in = new FileInputStream(new File("c:/myimg.jpg"));
PDJpeg img = new PDJpeg(document, in);
contentStream.drawImage(img, 100, 700);
contentStream.close();
document.save("c:/mydoc.pdf");
Lorsque j'exécute le code, il se termine avec succès, mais si j'ouvre le fichier pdf généré à l'aide d'Acrobat Reader, la page est complètement blanche et l'image n'y est pas placée.
Le texte est à la place correctement placé dans la page.
Une idée sur la façon de mettre mon image dans le pdf?
Ajoutez définitivement la page au document. Vous voudrez le faire, mais j'ai également remarqué que PDFBox n'écrira pas l'image si vous créez le PDPageContentStream AVANT le PDJpeg. Il n'est pas expliqué pourquoi il en est ainsi, mais si vous regardez de près la source d'ImageToPDF, c'est ce qu'ils font. Créez le PDPageContentStream après PDJpeg et cela fonctionne comme par magie.
...
PDJpeg img = new PDJpeg(document, in);
PDPageContentStream stream = new PDPageContentStream( doc, page );
...
On dirait que vous manquez juste un appel document.addPage(page)
.
Voir aussi l'exemple de classe ImageToPDF dans PDFBox pour un exemple de code.