我想在前言中理解我正在使用遗留代码,因此我不得不忍受不太理想的情况,并因此而做一些古怪的事情。在我获得重写批准之前,我将不得不做出应有的决定。
上下文
这是我的情况。该应用程序是一个简单的"一个是它报告SQL数据库。无论好坏,它都会使用postscript构建报告。它利用Ghostscript dll嵌入到应用程序目录中。这是踢球者,我要求我提供其输出已经是PDF格式的SSIS报告。为了兼容性,我需要将这些PDF转换为postscript,即使在大多数情况下它们将在以后转换回PDF。我知道这很可能是糟糕的设计,但有某些功能需要这个,它就是目前的状态。我正在使用GhostScript来处理转换。
观察到的行为 以下行为是将PDF转换为PS,通过应用程序,然后转换回PDF后观察到的行为。
使用" sDevice = pswrite"除了我调整分辨率选项之外,所有内容都有效,但报告编译的分辨率很低。
利用" sDevice = ps 2 写"我理解为当前接受的协议,PDF将不会回显并产生以下错误。
ERROR:
undefined
OFFENDING COMMAND:
U1!‘WVt92\a
STACK:
--nostringval--
20
仅在使用通过Web客户端访问的报表服务器的报表时才会产生上述错误。我可以确认PDF成功返回并且没有损坏。
在应用程序上运行本地SSIS包时,可以成功处理生成的PDF。
当使用PS2Write将原始PDF转换为PS时,注释将填充如下
%!PS-Adobe-3.0
%%BoundingBox: 0 0 612 792
%%Creator: GPL Ghostscript 905 (ps2write)
%%LanguageLevel: 2
%%CreationDate: D:20171003154139-05'00'
%%Pages: 3
%%EndComments
pswrite产生
%!PS-Adobe-3.0
%%Pages: (atend)
%%BoundingBox: 21 30 761 576
%%HiResBoundingBox: 21.600000 30.400000 760.566016 575.100000
%.....................................
%%Creator: GPL Ghostscript 905 (pswrite)
%%CreationDate: 2017/10/03 15:53:40
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%EndComments
%%BeginProlog
怀疑
我怀疑PDF是不兼容的标准,无法转换为PostScript。例如,较新的PDF版本无法处理。或者它可能包含一些不兼容的东西,比如字体或img。
无论如何,肯定要追捕这个吗?有没有人遇到类似的情况,解决方案是什么?关于要查看什么或尝试的事情的任何指示?
答案 0 :(得分:3)
说实话,没有人看到原始的PDF文件,没有人可能会提供帮助。如果出现错误,即使是虚拟文件也可以。
然而,首先想到的是你似乎正在使用Ghostscript 9.05。现在是5岁,目前的版本是(即将发布)9.22。在那段时间内,对ps2write进行了众多修复,至少50次或更多,我建议你做的第一件事就是升级并查看问题是否消失。
其次,您还不清楚为什么需要将PDF文件转换为PostScript。如果你正在做的就是通过Ghostscript和一些额外的PostScript反馈它们以便将组合转换成PDF,你不需要先将PDF文件转换成PostScript。 Ghostscript完全能够混合使用PDF和PostScript文件,因此您只需在SQL输出的PostScript之间插入PDF即可生成单个组合PDF。
这有许多优点;首先也是最明显的,你不应该得到你的转换问题。其次,PDF文件中无法用PostScript表示的任何构造(例如透明度)意味着内容将呈现为图像,而PostScript将只包含一个大位图。就像pswrite输出一样,避免转换意味着不会发生。第三,它比将所有PDF文件转换为PostScript要快。
如果你绝对不能这样做,那么我会尝试当前的代码,看看它是否更好。如果没有,那么你发现了一个错误,我建议你在https://bugs.ghostscript.com报告它,你需要能够提供一个示例文件和命令行。