使用 Ghostscript 在一个 postscript 批次中打印单独的 PDF 文件

Posted

技术标签:

【中文标题】使用 Ghostscript 在一个 postscript 批次中打印单独的 PDF 文件【英文标题】:Print separate PDF files in one single postscript batch using Ghostscript 【发布时间】:2020-06-17 06:53:11 【问题描述】:

抱歉,我对 Ghostscript 和整个 postscript 语言非常陌生。

我有以下需求:

我需要能够从特定的 PDF 文档中提取页面,在返回具有相同页面的 postscript 文件(称为 APIProcessedPS)的外部 API 中处理此页面。完成此操作后,我需要将所有内容发送到打印机,但要保持整个文档的连贯性(即不打印一部分,然后打印另一个,因为如果有人在我的两个请求之间打印,则文档可能无法在打印机上正确组装)。

另外我还有一些挑战:

    APIProcessedPS postscript 文件必须保存在 postscript 中,而不是转换为 PDF,所以我的想法是将原始 PDF 文件转换为 postscript,并将现有页面替换为 APIProcessedPS 页面。 必须将原始 PDF 文件的最后一页发送到打印机上的不同纸盘。 APIProcessedPS 黑色的内容必须转换为蓝色。 当然,所有的东西都要以一个批次(我想)发送到打印机以保持文件的连贯性。

我已经知道的:

使用 ghostscript 从 PDF 文件中提取要发送到 API 的页面 将现有的PDF文件转换成PS

我的挣扎:

将 APIPostscriptPS 页面重新组装到 postscript 文档中 将 APIPostscriptPS 后记中的黑色替换为另一种颜色(甚至可能吗?) 将所有内容发送到打印机,并为文档最后一页的一部分指定不同的纸盘。

如果有人能给我一些关于从哪里开始的提示,我将非常感激。

我正在尝试 GS 路线,因为它似乎是最合理的,但我对不同的方式非常开放,例如使用外部 c# 库或 api 如果它适合需要。

谢谢

拍拍

【问题讨论】:

【参考方案1】:

PostScript 是一种编程语言,因此您需要了解您正在尝试做的是干预程序,而不是破坏它。这不是小事。

幸运的是,ps2write 设备在最新版本的 Ghostscript 中生成了所谓的 DSC(文档结构约定)PostScript。这意味着输出 PostScript 文件中的每一页都是一个单独的实体。如果您将初始序言保留在顶部,那么您可以在程序的其余部分中重新排列页面。

但是,这并不意味着您一定可以在现有程序的中间插入不同的 PostScript 程序而不会造成问题。最好的办法是在插入新内容之前进行保存,然后再进行恢复。不能保证,因为我需要查看每种情况下的程序。

更改内容的颜色不清楚。这是文字、线条、图像吗?一些组合?它在什么色彩空间中定义?您再次谈论尝试修改程序,这并非易事。您最好让外部应用程序从外部获得此权利。再次没有看到 PostScript,几乎不可能发表评论。

为页面使用不同的纸盘取决于设备,您需要找出需要发送到打印机的内容以使其使用不同的纸盘。一旦您知道您可以自己插入相关命令,也可以使用 Ghostscript 中的 PSDocOptions 或 PSPageOptions 开关在相关页面上插入所需的命令。

【讨论】:

感谢您的回答,PDF 仅包含文本和表格,没有图像。 不幸的是,这只是问题的一部分。有多种方法可以设置颜色,部分取决于使用的颜色空间。另外,您希望整个页面是蓝色的,还是只是文本? 整个页面内容需要是蓝色的 好吧,你可以重新定义 setcolor 运算符,以便设置蓝色。可能类似于这个问题:***.com/questions/62419312/…

以上是关于使用 Ghostscript 在一个 postscript 批次中打印单独的 PDF 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 GhostScript 打印 PDF

在 Automator 中使用 Ghostscript?

PDF 上的 Ghostscript 邮票图像

使用 Ghostscript 分割 PDF

如何使用 Ghostscript 在 Postscript 中导入 png 文件?

使用 ghostscript 创建 pdf 文件