Ghostscritpt转换文件在adobe reader中无法查看

时间:2018-04-06 06:15:49

标签: ghostscript

我正在尝试使用-sDEVICE = pdfwrite通过ghost脚本执行pdf到pdfa对话。对话成功但第一页是空白的(其余页面很好);此外,adobe reader出错了"处理页面时出错。错误的操作数类型。"

命令:

cmd / c C:\ app \ others \ GhostScript \ 9_21 \ bin \ gswin64.exe -dPDFA = 2 -dBATCH -dNOPAUSE -dNOPLATFONTS -dPDFSETTINGS = / printer -sProcessColorModel = DeviceRGB -sDEVICE = pdfwrite -dCompatibilityLevel = 1.7 - dOptimize = true -dPDFACompatibilityPolicy = 1 -dAutoRotatePages = / None -sOutputFile =" 1107.pdf" " test1.pdf"

注意:pdf文件可以在pdf-xchange viewer,chrome浏览器中读取(第一页也是如此)。问题只出在adobe reader上。

输入pdf:test1.pdf

输出pdfa:1107.pdf

1 个答案:

答案 0 :(得分:0)

您使用的命令行存在许多问题,我最后会谈到这些问题。

要做的第一点是您应该始终使用当前代码。 9.21已过期,当前版本为9.23。当我通过当前版本运行文件时,使用提供的命令行,我在stderr上收到了一些警告(或者,因为你在窗口中使用了窗口化的可执行文件):

GPL Ghostscript 9.23 (2018-03-21)
Copyright (C) 2018 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 12.
Page 1
GPL Ghostscript 9.23: Setting Overprint Mode to 1
 not permitted in PDF/A-2, overprint mode not set

Attempting to write a DeviceN space with an inappropriate alternate,
have you set ColorConversionStrategy ?
Attempting to write a DeviceN space with an inappropriate alternate,
have you set ColorConversionStrategy ?
Attempting to write a DeviceN space with an inappropriate alternate,
have you set ColorConversionStrategy ?
Attempting to write a DeviceN space with an inappropriate alternate,
have you set ColorConversionStrategy ?
Attempting to write a DeviceN space with an inappropriate alternate,
have you set ColorConversionStrategy ?
Attempting to write a DeviceN space with an inappropriate alternate,
have you set ColorConversionStrategy ?
Attempting to write a DeviceN space with an inappropriate alternate,
have you set ColorConversionStrategy ?
Attempting to write a DeviceN space with an inappropriate alternate,
have you set ColorConversionStrategy ?
Attempting to write a DeviceN space with an inappropriate alternate,
have you set ColorConversionStrategy ?
Attempting to write a DeviceN space with an inappropriate alternate,
have you set ColorConversionStrategy ?
Attempting to write a DeviceN space with an inappropriate alternate,
have you set ColorConversionStrategy ?
Attempting to write a DeviceN space with an inappropriate alternate,
have you set ColorConversionStrategy ?
>>showpage, press <return> to continue<<

所以这几乎告诉你什么是错的,你还没有设置ColorConversionStrategy。所有打开文件而没有投诉的软件都是错误的。如果您通过Ghostscript将生成的PDF文件运行到显示屏,则显示:

GPL Ghostscript GIT PRERELEASE 9.24 (2018-03-21)
Copyright (C) 2018 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
   **** Error: Considering object with an invalid number -1 as null.
               Output may be incorrect.
   **** Error: Considering object with an invalid number -1 as null.
               Output may be incorrect.
   **** Error reading a content stream. The page may be incomplete.
               Output may be incorrect.
   **** Error: File did not complete the page properly and may be damaged.
               Output may be incorrect.
>>showpage, press <return> to continue<<

通过设置-dPDFSTOPONERROR和-dPDFDEBUG进行更多的讨论:

%Resolving: [-1 0]
   **** Error: Considering object with an invalid number -1 as null.
               Output may be incorrect.
%Pattern: << /PaintProc {<< >> .pdfpaintproc} /PatternType 2 /.pattern_uses_tran
sparency false /Matrix [0.000766095 -0.000451741 -0.000306278 -0.000529551 116.3
78 788.13] /Shading {-1 0 resolveR} >>
%Resolving: [-1 0]
   **** Error: Considering object with an invalid number -1 as null.
               Output may be incorrect.
Error: /typecheck in --makepattern--
Operand stack:
   --dict:11/19(L)--   --dict:5/13(L)--   --dict:5/13(L)--   --nostringval--   f
alse   --nostringval--   0.0   --nostringval--   --nostringval--   --dict:5/6(L)
--   --nostringval--   --nostringval--   --nostringval--   DataSource
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval-
-   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   fa
lse   1   %stopped_push   2015   1   3   %oparray_pop   2014   1   3   %oparray_
pop   1998   1   3   %oparray_pop   --nostringval--   --nostringval--   2   1
1   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--
  --nostringval--   --nostringval--   %array_continue   --nostringval--   --nost
ringval--   %loop_continue   --nostringval--   --nostringval--   1958   4   11
 %oparray_pop   --nostringval--   --nostringval--   false   1   %stopped_push
--nostringval--
Dictionary stack:
   --dict:984/1684(ro)(G)--   --dict:1/20(G)--   --dict:83/200(L)--   --dict:83/
200(L)--   --dict:133/256(ro)(G)--   --dict:307/450(ro)(G)--   --dict:33/64(L)--
   --dict:6/9(L)--   --dict:7/20(L)--   --dict:1/1(ro)(G)--   --dict:1/1(ro)(G)-
-
Current allocation mode is local
Last OS error: No such file or directory
GPL Ghostscript GIT PRERELEASE 9.24: Unrecoverable error, exit code 1

Close this window with the close button on the title bar or the system menu.

所以你可以看到有一个带有无效数字的对象(-1)和一个试图使用该对象的着色字典。这完全是非法的。

现在,原因是因为您设置为pdfwrite的选项。

首先要注意的是,Ghostscript的pdfwrite设备不会'转换'PDF文件。所发生的是输入被解释,转换为准备好渲染的图形基元,然后发送到渲染饼线。然而,pdfwrite设备不是渲染基元,而是将它们重新打包成PDF文件。这有很多后果,在相关的documentation.

中有所描述

为了创建PDF / A文件,输出文件必须遵循某些规则;它可能不包含两者 RGB和CMYK颜色,它只能包含一个或另一个。因此,您应该做的第一件事是将-sColorConversionStrategy设置为RGB,CMYK或UseDeviceIndependentColor之一。设置ProcessColorModel是不够的。如果设置ColorConversionStrategy,则会自动为您设置ProcessColorModel。这是最初的问题,修复产生有效的PDF文件(但不是有效的PDF / A文件)。

PDF / A文件还必须包含ICC配置文件OutputIntent,除非PDF文件仅由灰色或与设备无关的颜色组成。您的命令行不会这样做。

documentation再次描述了如何创建PDF / A文件。

从基础开始,设置-dPDFSETTINGS。在我看来,这是一个非常糟糕的主意,特别是在尝试创建PDF / A文件时。这样做会改变许多设置,除非您绝对确定要将所有这些设置设置为固定默认设置,否则不应使用它。

我不会触及-dCompatibilityLevel,pdfwrite设备根据它写入输出文件的内容,根据所需的一致性级别对其进行适当设置。除非您要添加需要更高级别的PDF文件(使用pdfmarks)构造,否则所有这些都会限制文件被更新版本的Acrobat打开。

我不会使用-dOtimtim,如果没有其他原因,它不会任何事情!如果你阅读文档,那么在Distiller params下注0表示可以设置和查询,但没有效果。

pdfwrite的等价物是-dFastWebView,但我仍然不会使用它,因为它几乎没用,只能加快第一页的加载速度,并且只有在PDF用户使用它时才会加速,而大部分都不会。