将 PDF 对转换为单个页面的最佳方法是什么?

What is the best way to convert PDF pairs into single pages?

我需要获取现有的 PDF(使用 Prawn 创建),并将第 1 页(封面)之后的成对组合成单页。我还想在连接页面的中心添加一条垂直线。这些页面将打印在书中,目标是制作类似于 Acrobat 中并排视图的单个 PDF 页面。我知道我可以将它们转换为图像,使用 ImageMagick 执行我需要的操作,然后将它们放回 PDF 格式,但我正在尝试尽量减少转换次数,以便尽可能多地保存质量。

我也意识到我可以从 Prawn 开始就做到这一点,但我正在努力避免这种情况,因为它需要对我们的应用程序进行非常大的更改。

用Ghostscript 和pdfwrite 工具可以做到这一点,但并不简单。您需要编写一些 PostScript 才能完成这项工作。

您需要添加 BeginPage 和 EndPage 过程,BeginPage 需要检查当前页码(您需要自己跟踪)。如果是第 1 页,则正常处理。如果它是偶数页,则丢弃当前的 PageSize 并将其替换为覆盖一对页面的页面。处理偶数页。请勿传输内容。

如果页面是奇数(而不是 1),则平移原点,使其向右偏移页面宽度。处理奇数页。使用 moveto、lineto 和 stroke 在两页之间绘制所需的线。传送页面。

这假设所有页面的大小和方向都相同,或者至少每个页面的大小都是事先已知的。也可以通过编程方式检索这些内容,但更复杂。

这绝对不简单,但如果您翻阅我在 PostScript 标签中的回答并查找任何包含 'imposition' 一词的内容,您可能会找到程序大纲来完成这项工作。

我快速浏览了一下, 是我前一段时间写的答案。它使用与上述方法不同的方法,它复制了 PDF 解释器的一些内容并重新调整了它们的用途。不过,它可以满足您的大部分需求。