3

我有一批由扫描页面组成的 PDF(大约 80,000 个文件)。图像层的像素大小与300dpi一致,但似乎设置为72dpi。结果,页面大小显示为 46x35 英寸。我需要调整这些文件,以便将它们注册为 8.5 x 11,或者它们的自然大小,并且我需要能够编写该过程的脚本,以便我可以将其保留在 80,000 个文档上(每个文档 2-5 页。)

我想避免重新采样图像层,因为这可能会增加损失,并显着减慢处理速度。我试过了:

convert -density 300x300 input.pdf output.pdf

但它会重新采样图像。我在 ghostscript 上尝试过不同的变体,例如

gs \
  -o output.pdf \
  -sDEVICE=pdfwrite \
  -dDownsampleMonoImages=false \
  -dMonoImageResolution=300 \
   input.pdf

这会生成一个文件,但它似乎没有改变,并且仍然注册为超大。此外,页面的大小和方向不同。因此,将它们全部强制为一种尺寸/方向是行不通的。

(仅供参考,我真的不在乎,但下一步是让所有这些文件都有 Acrobat Pro OCR,它的 OCR 会阻塞超过 45 英寸的任何东西。)

4

3 回答 3

3

PDF 是一种与分辨率无关的格式,因此图像的分辨率等无关紧要。页面的“自然大小”是 Acrobat 所说的,这是从文件中的 MediaBox(或 CropBox)信息收集的。

在我看来,原始转换为 PDF 是有问题的,而且文件确实是他们现在声称的(媒体)大小。

我怀疑你可能会得到你需要的结果;您“只是”需要调整文档的大小。问题在于,在媒体尺寸不同的地方(你说他们确实如此),这并非微不足道。

但是,在继续之前,我建议您获取一个您希望为 8.5x11 的文件并尝试以下操作:

gs -dBATCH -dNOPAUSE \
   -sDEVICE=pdfwrite \
   -dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=792 \
   -dFIXEDMEDIA \
   -dPDFFitPage \
   -sOutputFile=output.pdf \
    input.pdf

这将修复正在使用的媒体为 8.5x11,并告诉 Ghostscript 调整文档大小以适应页面(通过计算和应用比例因子)。除了压缩之外,它不应该影响图像数据,如果有彩色图像,我们可能需要担心 JPEG 伪影,但可以单独处理。

于 2012-07-17T07:15:36.250 回答
2

cpdf -scale-pages usletterportrait in.pdf -o out.pdf

除了将其包装在转换矩阵中以进行缩放之外,不会触及页面内容,并且也会缩放媒体/裁剪/艺术/出血/修剪框。

(商业,恐怕:

http://www.coherentpdf.com/

免责声明:我写的。)

于 2012-07-17T10:49:26.157 回答
1

像这样修改您的原始gs命令:

gs \
  -o output.pdf \
  -sDEVICE=pdfwrite \
  -dPDFFitPage \
  -g6120x7920 \
   input.pdf

然后检查两件事:

  1. 页面尺寸现在显示为“字母”(或 612x792 磅或 8.5x11 英寸)。
  2. 文件大小与原始文件大小仅略有不同(表明没有对页面图像进行重新采样)。

如果输入是仅以灰度扫描的文档(看起来是这样),则无需设置-dDownSample*Images或设置-d*ImageResolution

于 2012-07-17T11:05:35.393 回答