在一個應用程序中,用戶可以上傳任何pdf文件,其尺寸爲8.46「×10.97」。根據我們的應用尺寸應該是8.5「×11」。問題是,如何重新設置現有的pdf頁面大小來設置8.5「x 11」?我必須通過代碼修復,而不是手動或稱讚線路或外部軟件。請讓我知道哪個Java支持jar(免費版)提供了實現這個功能的功能,或者通過簡單的java修復也很好。如何調整現有的pdf頁面大小
回答
利用iText你可以做這樣的事情:
float width = 8.5f * 72;
float height = 11f * 72;
float tolerance = 1f;
PdfReader reader = new PdfReader("source.pdf");
for (int i = 1; i <= reader.getNumberOfPages(); i++)
{
Rectangle cropBox = reader.getCropBox(i);
float widthToAdd = width - cropBox.getWidth();
float heightToAdd = height - cropBox.getHeight();
if (Math.abs(widthToAdd) > tolerance || Math.abs(heightToAdd) > tolerance)
{
float[] newBoxValues = new float[] {
cropBox.getLeft() - widthToAdd/2,
cropBox.getBottom() - heightToAdd/2,
cropBox.getRight() + widthToAdd/2,
cropBox.getTop() + heightToAdd/2
};
PdfArray newBox = new PdfArray(newBoxValues);
PdfDictionary pageDict = reader.getPageN(i);
pageDict.put(PdfName.CROPBOX, newBox);
pageDict.put(PdfName.MEDIABOX, newBox);
}
}
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("target.pdf"));
stamper.close();
我介紹了寬容,因爲您可能不想更改大小隻有很小一部分的頁面。
此外,您可能還想要計入頁面的UserUnit值,即使它幾乎沒有被使用過。
任何通用PDF庫都可能允許這樣的事情,或者通過提供明確的方法來調整大小或允許直接訪問這裏使用。
關於您的要求免費版您在評論中澄清了沒有購買的免費手段;只要您遵守AGPL,就可以在不購買許可證的情況下使用iText。
謝謝mkl ...我會試着在你的代碼上面更新這個... – Subbu
只有在使用PdfStamper stamper = new PdfStamper(reader,new FileOutputStream(「C:\\ TestingDoc \\ target.pdf」) ); 我不應該生成新的輸出文件。問題是調整大小邏輯不工作在像[PdfReader reader = new PdfReader(attachment.getFullDocContent()); getFullDocContent將返回byte []。 – Subbu
除了'FileOutputStream'之外,您還可以使用'ByteArrayOutputStream',從中可以在沒有任何文件的情況下獲得byte []'。在未來的問題中,請不要忘記提及重要的要求。 – mkl
也許現有的文件追加到使用PDFBox的給定的規範一個新的文檔說明in this question(iTextPdf現在提供了一個商業授權)
- 1. 如何防止在PDF中調整頁面大小?
- 2. 如何使用Coldfusion/iText調整現有PDF的大小
- 3. 如何調整頁面大小?
- 4. 在調整頁面大小時調整圖像的大小頁面
- 5. 調整PDF畫布最大頁面大小
- 6. 如何在不調整大小的情況下調整頁面大小?
- 7. 調整窗口大小時調整頁面大小
- 8. 在窗口調整頁面大小調整大小
- 9. IText如何調整頁面上的pdf
- 10. 如何根據iFrame大小調整頁面內容大小
- 11. 在Python中調整pdf頁面的大小
- 12. PDF頁面上的調整大小按鈕
- 13. 如何自動調整頁面大小,同時調整窗口大小
- 14. 頁腳不會調整頁面大小
- 15. iTextSharp - 在PDF中添加圖像並調整頁面大小
- 16. jQuery的調整頁面大小
- 17. 自動調整大小的HTML頁面
- 18. Android的調整大小/浮動頁面
- 19. 調整YUI撥號小部件的大小頁面調整大小
- 20. 需要調整大小頁面scrollToFixed
- 21. 相應地調整頁面大小
- 22. 禁用html頁面調整大小
- 23. 頁面動態調整大小
- 24. 禁用頁面調整大小HTML
- 25. jcarouselPagination:調整大小'頁面'變量
- 26. Magento產品頁面調整大小
- 27. 頁面調整大小導致Div's Displace
- 28. 在渲染之前用ABCPdf調整頁面大小(pdf中的巨大圖像)
- 29. Jquery在頁面加載/調整大小時調整div的大小
- 30. 試圖調整整個頁面的大小(IE縮小一切)
你是指*免費版*是什麼意思?例如。只要您尊重AGPL許可證,iText就可以自由使用。你能尊重它嗎?如果沒有,請澄清您的許可限制。 – mkl
這就是說,你所要做的就是操縱每個文檔頁面的媒體框(和裁切框,如果有的話)的值。這可以很容易地用例如iText或PDFBox,但其他庫也是如此。那麼,應該使用哪個庫? – mkl
沒有購買的免費手段。如果可以通過iText或PDFBox獲得如何調整現有PDF頁面的大小,請提供代碼。 – Subbu