gpt4 book ai didi

c# - PostScript - 使用 Ghostscript "pdfwrite"时出错

转载 作者:太空宇宙 更新时间:2023-11-03 22:53:14 25 4
gpt4 key购买 nike

我想先了解一下我正在使用遗留代码,因此我不得不忍受不太理想的情况,因此我正在做一些古怪的事情。在我获得重写批准之前,我将不得不到期。

上下文

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

观察到的行为以下行为是将 PDF 转换为 PS、通过应用程序然后转换回 PDF 后观察到的行为。

当使用“sDevice=pswrite”时,一切正常,除了报告以较差的分辨率编译,尽管我如何调整分辨率选项。

当利用“sDevice=ps2write”(据我所知是当前接受的协议(protocol))时,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 文件,因此您可以简单地将 PDF 插入 SQL 输出的 PostScript 之间,以生成单个组合 PDF。

这有很多优点;首先也是最明显的是,您不应该遇到转换问题。其次,PDF 文件中无法在 PostScript 中表示的任何构造(例如透明度)意味着内容将呈现为图像,而 PostScript 将只包含一个大位图。就像 pswrite 输出一样,避免转换意味着不会发生这种情况。第三,它比首先将所有 PDF 文件转换为 PostScript 更快。

如果您绝对不能那样做,那么我会尝试当前的代码,看看它是否更好。如果没有,那么您已经发现了一个错误,我建议您在 https://bugs.ghostscript.com 上报告它。不过,您将需要能够提供示例文件和命令行。

关于c# - PostScript - 使用 Ghostscript "pdfwrite"时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46551180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com