0
我使用此方法从原始PDF复制和缩放页码,并将它们生成为仅包含从原始PDF中选定和缩放的页面的PDF。如何使用iText7减小生成PDF的大小
private static void addScaledPage(PdfDocument pdf, PdfDocument srcDoc, String pageNumber) throws IOException {
PdfPage page = pdf.addNewPage(PageSize.A4);
PdfCanvas canvas = new PdfCanvas(page);
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(0.86, 0.86);
canvas.concatMatrix(transformationMatrix);
PdfFormXObject pageCopy = srcDoc.getPage(Integer.valueOf(pageNumber)).copyAsFormXObject(pdf);
canvas.addXObject(pageCopy, 50, 30);
}
此代码工作正常,但是当我尝试采取从原始PDF 3页具有140页,约小问题发生。 10 MB大小=>具有3个选定页面的生成的PDF也具有约。 10 MB。 此外,当我尝试从原始文档复制3页或10页时,我总是获得相同尺寸的生成PDF =>它似乎是参考文献从源复制PDF
我希望能给我一些建议,我在执行中做错了什么?或者其他一些建议?
最亲切的问候,
没有看pdf源代码,我不能肯定地说,但PDF允许您重新使用对象,并将一个页面复制为formXObject也将复制显示该页面所需的所有资源。如果您正在复制相同的页面,并且原始文档重新使用此页面的资源,则可以解释观察到的行为。但是对于单个页面,10MB是相当多的:p –
解决这个问题的任何想法......是否有可能将属于iText7库的getPage()或copyPagesTo()方法从原始源PDF文档中获取所有资源并复制它到生成的PDF? – dkkd