每个命令行调整多个单个 PDF 的大小

Resize multiple single PDF per command line

我们在一个文件夹中有大约 100 个 PDF,它们具有不同的页面大小(即 A4,更奇怪的),但所有的长宽比都是 A4。现在我们需要将所有的尺寸调整到相同的尺寸,即 A4。

目前我们有 Sejda 用于合并每个批处理文件的一些 PDF。因此,我们希望再次为每个批处理文件提供一个解决方案。

In this question 他们在其他解决方案中建议使用 PDFtk 或 PDF 拆分和合并,但他们似乎不提供此功能。还有其他方法或提示吗?

您可以尝试使用 Ghostscript。以下命令会将每个单独的 PDF 调整为 A4:

for input in *.pdf ; do
     gs                        \
       -o A4-resized-${input}  \
       -sDEVICE=pdfwrite       \
       -dPDFFitPage            \
       -g5950x8420             \
       -dPDFSETTINGS=/prepress \
        ${input}
 done

此命令将从所有输入文件创建一个合并的 PDF,并在此过程中调整每个页面的大小:

 gs                        \
   -o A4-resized-${input}  \
   -sDEVICE=pdfwrite       \
   -dPDFFitPage            \
   -g5950x8420             \
   -dPDFSETTINGS=/prepress \
    *.pdf

如果 shell 通配符 *.pdf 没有按照您的喜好对页面进行排序,您必须自己做:

[...gs-cmd...]  input1.pdf input2.pdf input3.pdf [input4.pdf ...] 

注意事项:在这些情况下,第二个选项(合并和调整单个 PDF 的大小)可能会导致合并的 PDF 中的字体出现问题:

  1. 您安装的 Ghostscript 不是最新版本。
  2. 您输入的 PDF 文件使用子集字体,其中字体名称的 'unique' 前缀(例如 XAGTRU+)根本不是唯一的,而是可以预测的。 OpenOffice/LibreOffice 和其他 PDF 生成器以 BAAAAA+CAAAAA+DAAAAA+ 开头(可以预见)。这导致输入 PDF 注入 BAAAAA+Arial 子集字体的多个实例,这些字体 不是 唯一但 不同 并且仍然使用相同的名称。