C# PostScript-使用Ghostscript时出错;pdfwrite";

C# PostScript-使用Ghostscript时出错;pdfwrite";,c#,pdf,ssis,ghostscript,postscript,C#,Pdf,Ssis,Ghostscript,Postscript,我想在开始这篇文章时理解到,我正在使用遗留代码,因此我不得不在不太理想的情况下生活,因此我正在做一些奇怪的事情。在我得到重写的批准之前,我必须按时完成 上下文 这是我的情况。该应用程序是一个“简单”的应用程序,因为它报告了一个SQL数据库。无论好坏,它都使用postscript构建报告。它利用了Ghostscript DLL,它已嵌入到应用程序目录中。这里是关键,有人要求我包括输出为PDF格式的SSIS报告。为了兼容性起见,我需要将这些PDF转换为postscript,即使在大多数情况下,它们稍

我想在开始这篇文章时理解到,我正在使用遗留代码,因此我不得不在不太理想的情况下生活,因此我正在做一些奇怪的事情。在我得到重写的批准之前,我必须按时完成

上下文

这是我的情况。该应用程序是一个“简单”的应用程序,因为它报告了一个SQL数据库。无论好坏,它都使用postscript构建报告。它利用了Ghostscript DLL,它已嵌入到应用程序目录中。这里是关键,有人要求我包括输出为PDF格式的SSIS报告。为了兼容性起见,我需要将这些PDF转换为postscript,即使在大多数情况下,它们稍后会转换回PDF。我知道这很可能是一个糟糕的设计,但是有一些功能需要这样做,这就是目前的情况。我正在使用GhostScript来处理转换

观察到的行为 以下行为是PDF转换为PS,通过应用程序传递,然后转换回PDF后观察到的行为

当使用“sDevice=pswrite”时,所有功能都正常工作,除了报告的分辨率很低,不管我如何选择分辨率选项

当利用“sDevice=ps2write”(据我所知,这是当前已接受的协议)时,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


有什么办法可以确定吗?有没有人遇到过类似的情况?解决方法是什么?关于调查什么或尝试什么,有什么建议吗

老实说,如果看不到原始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更快


如果您绝对不能做到这一点,那么我将尝试当前的代码,看看它是否更好。如果没有,那么您已经发现了一个bug,我建议您在报告时报告它。不过,您需要能够提供一个示例文件和命令行。

您可以发布用于双向转换的完整命令吗?我做了两件事,我认为这两件事起了作用。1) 我确实更新到了9.22 2)我没有意识到可以在GhostScript中混合使用pdf和postscript来生成单个输出!这就成功了。