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

时间:2015-02-11 09:09:08

标签: batch-file pdf sejda

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

目前我们正在使用Sejda来合并每个批处理文件中的一些PDF。因此,我们更喜欢每个批处理文件的解决方案。

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

1 个答案:

答案 0 :(得分:4)

您可以尝试使用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文件使用子集化字体,其中字体名称的“唯一”前缀(例如XAGTRU+)根本不是唯一的,而是可预测的。众所周知,OpenOffice / LibreOffice和其他PDF生成器始终以({1}},BAAAAA+CAAAAA+开头的前缀(可预测)。这导致输入PDF注入的DAAAAA+子集字体的多个实例 唯一但 不同 仍然使用相同的名称。