缩放扫描的PDF而无需重新采样图像层

时间:2012-07-16 20:51:47

标签: macos unix pdf imagemagick ghostscript

我有一批由扫描页面组成的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所有这些文件,以及超过45英寸的OCR扼流圈。)

3 个答案:

答案 0 :(得分: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伪像,但可以单独处理。

答案 1 :(得分:2)

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

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

(商业,我很害怕:

http://www.coherentpdf.com/

免责声明:我写了。)

答案 2 :(得分:1)

修改原始的gs命令,如下所示:

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

然后检查两件事:

  1. 页面尺寸现在显示为“字母”(或612x792点,或8.5x11英寸)。
  2. 文件大小与原始大小略有不同(表示未对页面图像进行重新采样)。
  3. 如果输入仅以灰度扫描文档(看起来像是),则无需设置-dDownSample*Images或设置-d*ImageResolution