web-dev-qa-db-ja.com

PDFBoxを使用してPDFに画像を追加できない

私はpdfboxライブラリを使用してゼロからPDFを作成するJavaアプリを書いています。
ページの1つにjpg画像を配置する必要があります。

私はこのコードを使用しています:

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");

コードを実行すると、コードは正常に終了しますが、生成されたpdfファイルをAcrobat Readerで開くと、ページが完全に白くなり、画像が配置されません。
代わりにテキストがページに正しく配置されます。

PDFに画像を配置する方法に関するヒントはありますか?

28
Davide Gualano

ドキュメントにページを確実に追加してください。そうしたいと思うでしょうが、PDJpegの前にPDPageContentStreamを作成すると、PDFBoxが画像を書き出さないことにも気づきました。これがなぜそうであるかは説明されていませんが、ImageToPDFのソースをよく見ると、それが彼らの仕事です。 PDJpegの後にPDPageContentStreamを作成すると、魔法のように機能します。

...
PDJpeg img = new PDJpeg(document, in);
PDPageContentStream stream = new PDPageContentStream( doc, page );
...
52
chubbsondubs

document.addPage(page)呼び出しが欠落しているようです。

サンプルコードについては、PDFBoxの ImageToPDF サンプルクラスも参照してください。

6
Jukka Zitting