使用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。
我有一个 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。