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