如何将任意PDF文件降级为PDF-1.2版本?

时间:2011-01-07 08:43:55

标签: java pdf itext

我有一些用户生成的PDF文件。通常,文件是使用Word生成的,但它们可能只是一种有效的PDF文件。如果文件版本号较高,我想将文件转换为PDF-1.2版。应该删除仅在更高版本(如多媒体)中可用的功能,结果应该仍然合理且可读。

如果没有Adobe Acrobat等交互式工具,如何以编程方式执行此操作?最好是Java和iText - 库,但我也会对其他解决方案感兴趣。

一种方法是从原始PDF生成一堆图像,然后将它们打包为PDF-1.2文件,但这是一种更优雅的方式吗?

3 个答案:

答案 0 :(得分:2)

尝试下面的命令行。它使用Ghostscript重新提取PDF。使用Ghostscript版本8.71或更高版本:9.00。 (以上错误的投票回答建议“使用setPdfVersion()”在iText中设置PDF版本将无效 - 它只会重新标记PDF,这只会导致误导。 。)

gswin32c.exe ^
   -o output-v1.2.pdf ^
   -sDEVICE=pdfwrite ^
   -dPDFSETTINGS=/ebook ^
   -dCompatibilityLevel=1.2 ^
    input-v1.6.pdf

答案 1 :(得分:1)

最简单的方法是通过Ghostscript重新打印。

答案 2 :(得分:1)

您可以使用setPdfVersion()在iText中设置PDF版本,但我认为降级不会开箱即用。您可以使用PdfCopy并将您的pdf写入1.2版本的新版本,并删除所有无1.2对象。或者将它们转换为1.2版本的对象(我认为你必须自己做,但不确定)