私は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に画像を配置する方法に関するヒントはありますか?
ドキュメントにページを確実に追加してください。そうしたいと思うでしょうが、PDJpegの前にPDPageContentStreamを作成すると、PDFBoxが画像を書き出さないことにも気づきました。これがなぜそうであるかは説明されていませんが、ImageToPDFのソースをよく見ると、それが彼らの仕事です。 PDJpegの後にPDPageContentStreamを作成すると、魔法のように機能します。
...
PDJpeg img = new PDJpeg(document, in);
PDPageContentStream stream = new PDPageContentStream( doc, page );
...
document.addPage(page)
呼び出しが欠落しているようです。
サンプルコードについては、PDFBoxの ImageToPDF サンプルクラスも参照してください。