簡體   English   中英

使用pdfbox將A4圖像定位為PDF文件中的頁面

[英]Positioning A4 image as page inside PDF file using pdfbox

我有一個文件 jpg 文件:2480 x 3508 像素,這是 4A 的合適尺寸。 我需要把這個文件放在一個pdf中。

PDDocument doc = new PDDocument();
ByteArrayOutputStream os = new ByteArrayOutputStream();
InputStream certificate = getClass().getResourceAsStream("certificate.jpg");
BufferedImage bi = ImageIO.read(certificate);
PDPage page = new PDPage(PDRectangle.A4);//<<---- A4
doc.addPage(page);

PDImageXObject pdImageXObject = LosslessFactory.createFromImage(doc, bi);
PDPageContentStream contentStream = new PDPageContentStream(doc, page, 
PDPageContentStream.AppendMode.APPEND, false);
contentStream.drawImage(pdImageXObject, 0, -10);
contentStream.close();
doc.save( "c://appfiles//PDF_image.pdf" );
doc.close();

問題是生成的文件完全關閉並且不適合 PDF 中的 A4 尺寸。

源文件: https : //i.stack.imgur.com/a0ZHG.jpg
生成的文件: https : //www.dropbox.com/s/ufo3246b6eoz3f5/PDF_image.pdf?dl=1

我知道我可以使用寬度和高度,但隨后打印質量下降,我認為PDRectangle.A4旨在防止此類操作。

如何使2480 x 3508 pixels適合PDRectangle.A4 pdf 頁面?

謝謝

PDF 的尺寸為 72 dpi,

System.out.println(PDRectangle.A4); // output is [0.0,0.0,595.27563,841.8898]

你的圖像是 300 dpi,所以你必須縮放:

contentStream.drawImage(pdImageXObject, 0f, -10f, 
        pdImageXObject.getWidth() / 300f * 72, 
        pdImageXObject.getHeight() / 300f * 72);

我還建議使用JPEGFactory.createFromStream() ,它更快、更小並且直接使用 jpeg 流。 結果 PDF 文件為 580 KB 而不是 2555 KB。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM