Ghostscript 不会将 PDF 转换为 PDF/A。注释问题

Ghostscript won't convert PDF to PDF/A. Annotation Issue

我正在尝试将 PDF 转换为 PDF/A。每次通过我都会收到错误“GPL Ghostscript 9.19: Annotation set to non-printing, not permitted in PDF/A, reverting to normal PDF output”。

PDF 之前是由 wkhtmltopdf 从 HTML 生成的。由于错误非常模糊,我对 PDF 注释进行了一些研究。我已经确认 PDF 没有注释,展平注释(虽然没有)没有用,我尝试了 -dShowAnnots=false 开关。都无济于事。我也尝试过使用各种不同的 PDF,但我在所有 PDF 上都遇到了同样的错误。

我用来进行转换的命令是“gs -dPDFA=2 -dNOOUTERSAVE -sProcessColorModel=DeviceRGB -sDEVICE=pdfwrite -o output.pdf /Users/work/Documents/Projects/pdf-generator-service-tests/PDFA_def.ps -dPDFACompatibilityPolicy=1 input.pdf

我尝试使用 wkhtmltopdf https://google.com putput.pdf 从 Google 的主页创建一个基本的 PDF 页面,但仍然没有成功(这是我尝试转换的 PDF 示例,对于那些可能想尝试并复制该问题)。

我认为这个错误很具体; PDF/A 不允许将注释设置为非打印。您没有包含导致问题的文件类型的实际示例,因此我无法对任何注释的存在发表评论,但我向您保证,如果没有注释,就不可能获得此消息。

既然您已经将 PDFACompatibility 设置为 1,那么我无话可说。您可以打开错误报告并将文件附加到那里,或者 post 一个 link 到这里。没有它我不能说太多。

哦,你没有说你使用的是哪个版本的 Ghostscript,或者你从哪里获得它。有时打包程序会破坏某些东西,因此 可能 值得尝试从源代码构建。

一分;在设置 PDFACompatibility=1 之前执行 PDFA_def.ps 文件,这可能不会起作用,您需要切换这两个。您应该在进行任何输入之前设置控件,否则可能会出错,尝试更改中途并不是一个好主意。

就像 KenS 所说的,没有 PDF 就很难知道任何事情,但是由于您在将 Google 主页转换为 PDF 时遇到问题,我怀疑它是外部 link 导致问题的原因。链接是注释,在 PDF/A 中,不允许使用外部 link。 HTML 中的任何 link 在转换为 PDF 时都将被视为外部文件。

我使用 gs (v9.21) 将注释设置为非打印 (hyperref) 的 PDF 转换为 PDF/A 兼容文件。注释不会出现在输出文件中,但就我而言,这不是问题。

我使用的命令是:

gs -dPDFA=2 -dBATCH -dNOPAUSE -dPDFACompatibilityPolicy=1 -dUseCIEColor -sProcessColorModel=DeviceGray -sDEVICE=pdfwrite -sOutputFile=output_file.pdf input_file.pdf

备注:

  • -dPDFACompatibilityPolicy=1 而不是 -sPDFACompatibilityPolicy=1。后者不会强制 gs 省略注释,而前者会。
  • 我使用 -dUseCIEColor 因为 pdfa 验证 (https://www.pdf-online.com/osa/validate.aspx) failed with an issue related to the color space. This parameter is deprecated but I did not find any other way around this issue. For more details, see Convert PS files to PDF/A via Ghostscript, color space problems