PDFBoxを使用してJavaでレポートを生成しています。私の要件の1つは、ページの上部に会社ロゴを含むPDFドキュメントを作成することです。私はそれを達成する方法を見つけることができません。私は、Javaクラスで次のメソッドを持っています:Apache PDFBoxを使用して画像をPDFページの先頭に移動する方法
public void createPdf() {
PDDocument document = null;
PDPage page = null;
ServletContext servletContext = (ServletContext) FacesContext
.getCurrentInstance().getExternalContext().getContext();
try {
File f = new File("Afiliado_2.pdf");
if (f.exists() && !f.isDirectory()) {
document = PDDocument.load(new File("Afiliado_2.pdf"));
page = document.getPage(0);
} else {
document = new PDDocument();
page = new PDPage();
document.addPage(page);
}
PDImageXObject pdImage = PDImageXObject.createFromFile(
servletContext.getRealPath("/resources/images/logo.jpg"),
document);
PDPageContentStream contentStream = new PDPageContentStream(
document, page, AppendMode.APPEND, true);
contentStream.drawImage(pdImage, 0, 0);
// Make sure that the content stream is closed:
contentStream.close();
// Save the results and ensure that the document is properly closed:
document.save("Afiliado_2.pdf");
document.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
イメージは現在PDFの一番下に表示されています。変更する必要がある行はですが、ページの上部に表示されるように指定する必要のある座標は何ですか?
おそらく 'AppendMode.APPEND'にはこれと関係がありますか? – UDKOX
Maruansの回答に加えて、既存のファイルの場合、5番目のパラメータ(resetContext)を持つPDPageContentStreamコンストラクタを使用する方が安全です。 –