Ghostscript 9.21转换含附件PDF时丢失附件的技术问询
Ghostscript 9.21 PDFA-2转换丢失附件的解决方案
我之前碰到过一模一样的问题,Ghostscript的pdfwrite设备默认会过滤掉PDF里的嵌入式附件(就是你提到的附件1.pdf),尤其是在做PDFA转换的时候,这个默认行为直接导致附件没被写入输出文件。
问题根源
Ghostscript的pdfwrite驱动在默认配置下,为了优化输出体积或者遵循默认文档规范,会自动忽略PDF中的嵌入式文件对象。当你加上-dPDFA=2参数进行PDFA-2转换时,这个过滤逻辑依然生效,所以原文件里的附件就丢失了。
解决办法
只需要在命令行里添加-dPreserveEmbeddedFiles=true参数,强制Ghostscript保留原PDF中的嵌入式附件。修改后的完整命令如下:
cmd /c %GHOST_SCRIPT_EXE% -dPDFA=2 -dBATCH -dNOPAUSE -dSubsetFonts=false -dPDFSETTINGS=/printer -sProcessColorModel=DeviceRGB -sDEVICE=pdfwrite -dCompatibilityLevel=1.7 -dOptimize=true -dPDFACompatibilityPolicy=1 -dAutoRotatePages=/None -dPreserveEmbeddedFiles=true -sOutputFile="out.pdf" "test.pdf"
额外说明
- 这个参数在Ghostscript 9.21版本中是完全支持的,它会明确告诉
pdfwrite设备保留所有嵌入式文件对象。 - PDFA-2标准本身允许包含嵌入式文件,所以添加这个参数不会违反PDFA-2的规范——哪怕你的附件不是PDFA兼容格式,Ghostscript默认也会尝试保留,除非你设置了更严格的兼容性策略。
运行修改后的命令后,你再检查out.pdf,应该就能看到原来的附件1.pdf被完整保留下来了。
内容的提问来源于stack exchange,提问作者JavaGeek
相关产品推荐
相关产品推荐

