2011-12-15 38 views
28

私は、pdfboxライブラリを使用してゼロからPDFを作成するJavaアプリケーションを作成しています。
ページの1つにjpgイメージを配置する必要があります。PDFBoxを使用してPDFに画像を追加できません

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

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

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

どのように私のイメージをpdfに入れるかに関するヒント?

答えて

52

必ずドキュメントにページを追加してください。 PDJpegの前にPDPageContentStreamを作成すると、PDFBoxは画像を書き出さないことに気付きました。理由は分かりませんが、ImageToPDFのソースを見て、それが何をしているのかが分かりません。 PDPageContentStreamをPDJpegの後に作成すると、魔法のように動作します。

... 
PDJpeg img = new PDJpeg(document, in); 
PDPageContentStream stream = new PDPageContentStream(doc, page); 
... 
+4

PDPageContentStreamが問題を解決する前にPDJpegの作成を移動すると、ありがとうございます。 –

+1

ダー、私もこれと戦ってきました。これで解決しました。ありがとうございました。私の本のバグのようだ...少なくとも警告を与えるべきである! – berry120

+0

あなたは私を救った! Tnx。私のイメージがByteArrayInputStreamから表示されない理由を理解するために1時間働いた... PDJpegとPDPageContentStreamの順番だった... –

6

document.addPage(page)コールが欠落しているようです。

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

+0

ページが実際のコードでドキュメントに追加されました。そのコード行を貼り付けるのを忘れました。元の投稿を修正しています。 –

関連する問題