在一个应用程序中,用户可以上传任何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. 如何使用Coldfusion/iText调整现有PDF的大小
- 2. 如何调整页面大小?
- 3. 在调整页面大小时调整图像的大小页面
- 4. 调整PDF画布最大页面大小
- 5. 如何在不调整大小的情况下调整页面大小?
- 6. 在窗口调整页面大小调整大小
- 7. 调整窗口大小时调整页面大小
- 8. IText如何调整页面上的pdf
- 9. PDF页面上的调整大小按钮
- 10. 在Python中调整pdf页面的大小
- 11. 页脚不会调整页面大小
- 12. iTextSharp - 在PDF中添加图像并调整页面大小
- 13. 自动调整大小的HTML页面
- 14. Android的调整大小/浮动页面
- 15. jQuery的调整页面大小
- 16. 调整YUI拨号小部件的大小页面调整大小
- 17. jcarouselPagination:调整大小'页面'变量
- 18. Magento产品页面调整大小
- 19. 需要调整大小页面scrollToFixed
- 20. 禁用页面调整大小HTML
- 21. 页面动态调整大小
- 22. 相应地调整页面大小
- 23. 禁用html页面调整大小
- 24. Jquery在页面加载/调整大小时调整div的大小
- 25. 试图调整整个页面的大小(IE缩小一切)
- 26. 如何根据Silverlight页面的内容调整layoutRoot的大小?
- 27. 调整面板的大小
- 28. (PdfSharp)如何使用pdfsharp更改现有PDF文件的页面大小?
- 29. 调整页面大小和导航栏的大小
- 30. 如何从子页面内调整iFrame的大小?
你是指*免费版*是什么意思?例如。只要您尊重AGPL许可证,iText就可以自由使用。你能尊重它吗?如果没有,请澄清您的许可限制。 – mkl
这就是说,你所要做的就是操纵每个文档页面的媒体框(和裁切框,如果有的话)的值。这可以很容易地用例如iText或PDFBox,但其他库也是如此。那么,应该使用哪个库? – mkl
没有购买的免费手段。如果可以通过iText或PDFBox获得如何调整现有PDF页面的大小,请提供代码。 – Subbu