gpt4 book ai didi

java - 将 PDF 从 servlet 转换为旧版本?

转载 作者:行者123 更新时间:2023-11-29 05:46:58 26 4
gpt4 key购买 nike

希望有一个开源或合理的商业许可产品,可以从 Redhat 5.x Linux 环境中运行在 JBoss AS5 上的 Java Servlet 使用,将 PDF 从 1.5 版本转换为 1.4 版本。

或者我可以用来修改 PDF 1.5 内容以移回 1.4 兼容格式的任何技巧。真的什么

我有一个 PDF,我将作为对 servlet 的响应返回。但是它是1.5格式的,在我们的一些客户的adobe5旧版本中是不会显示的。但它确实在 1.4 中显示,所以如果可能的话,我需要一种方法来转换它。

还有其他解决方法吗?想法?我洗耳恭听!

如果你能帮助我,请告诉我!

最佳答案

如果问题实际上不是(仅仅)文档声明的版本号,而是自 PDF 1.5 以来允许的根本改变文档文件结构(因此,自 Adob​​e Reader 6) --- 即交叉引用流(而不是交叉引用表)和对象流 --- 以下使用 iText 库的代码可能对您有所帮助:

PdfReader reader = new PdfReader(SOURCE);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(TARGET), '4');
stamper.close();

这实际上解析了原始 PDF 文件并从解析后的 PDF 对象创建了一个新的 PDF 文件。不过,默认情况下,iText 使用交叉引用或对象流。因此,新的 PDF 文件不包含两者。

'4' 指示 iText 在目标文件的 header 中声明版本 1.4。

根据 PDF 大小和可用资源,您可能希望使用不同的 PdfReader 构造函数,而不是一次将所有源 PDF 读入内存,而是仅在需要时才将其读入内存。

PS:我使用的是当前的 iText 5.4.x 版本。 iText 可根据 AGPL 的条件免费提供或以商业形式提供。

PPS:如果您想强制 iText 使用交叉引用和对象流,则必须在构造 stamper 之后调用 stamper.setFullCompression()

关于java - 将 PDF 从 servlet 转换为旧版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15512572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com