使用 Ghostscript 调整多页混合格式 PDF 的大小?

Resizing multi-page mixed-format PDF with Ghostscript?

我有混合格式 A4(纵向)- A0(横向)的多页 PDF 文件。 Ghostscript 是否能够将尺寸 >A3 的页面调整为 A3 – 但不调整尺寸较小 (A4) 的页面?

首先,Ghostscript 不对输入进行操作,您应该阅读 ghostpdl/doc/vectordevices.htm 以了解 Ghostscript 和 pdfwrite 设备的实际工作方式。

开箱即用,没有 Ghostscript 和 pdfwrite 设备不允许您从输入生成具有不同大小媒体的输出,并且每个页面都不同(您可以让它生成大小为单一媒体大小的输出).当然,它可以完成,但会涉及一些编程,而且是在 PostScript 中。

您可能想查看 ghostpdl/Resource/Init/pdf_main 中的 pdf_PDF2PS_matrix 例程。ps:

% Compute the matrix that transforms the PDF->PS "default" user space
/pdf_PDF2PS_matrix {    % <pdfpagedict> -- matrix
...

计算调整内容大小以适合媒体时所需的比例因子。

还有pdfshowpage_setup:

/pdfshowpage_setpage {  % <pagedict> pdfshowpage_setpage <pagedict>
  6 dict begin      % for setpagedevice
        % Stack: pdfpagedict
...

这是选择介质尺寸的地方。

在花了很长时间寻找解决方案之后,我找到了一个很棒但价格合理的工具,它能够进行大小调整和更多操作:PStill (http://www.pstill.com/)