使用 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 仅包含文本和表格,没有图像。 不幸的是,这只是问题的一部分。有多种方法可以设置颜色,部分取决于使用的颜色空间。另外,您希望整个页面是蓝色的,还是只是文本? 整个页面内容需要是蓝色的 好吧,你可以重新定义 set以上是关于使用 Ghostscript 在一个 postscript 批次中打印单独的 PDF 文件的主要内容,如果未能解决你的问题,请参考以下文章