首页 > 解决方案 > 使用 ImageMagick 裁剪和重新排列带有扫描单色内容的 PDF(文件大小问题)

问题描述

我对 ImageMagick 比较陌生。到目前为止,我一直在使用它来批量编辑 png 文件并将它们组合成 PDF。

现在我遇到了以下项目的问题:我有一本扫描的书作为 PDF 文件(PDF 页面为 DIN A4 大小,每页包含两本书页,单色,400 dpi,周围有很多多余的黑边双页)并想对其进行修改,以便我得到一个 PDF 文档,其页面尺寸较小,每个页面包含一个书页。

我确信我的编程相当粗糙和复杂,但以下工作:

REM split input.pdf into single pages outputXXX.png
magick -density 400 AMDP-Leitfaden.pdf -colorspace gray output%%03d.png

REM defining upper left und lower right corner positions of book pages on scanned pages
REM left page
set x1a=1086
set y1a=0
set x2a=2883
set y2a=2895
REM right page
set x1b=2883
set y1b=0
set x2b=4680
set y2b=2895

REM calculating page widths and heights
set /a x2aminusx1a = %x2a% - %x1a%
set /a y2aminusy1a = %y2a% - %y1a%
set /a x2bminusx1b = %x2b% - %x1b%
set /a y2bminusy1b = %y2b% - %y1b%

REM cutting out left and right pages out of the outputXXX.png files and saving them as pXXXa.png and pXXXb.png, respectively
magick output*.png -crop "%x2aminusx1a%x%y2aminusy1a%+%x1a%+%y1a%" p%%03da.png
magick output*.png -crop "%x2bminusx1b%x%y2bminusy1b%+%x1b%+%y1b%" p%%03db.png

REM combining p*.png into one PDF file result.pdf
magick p*.png -units PixelsPerInch -density 400 -page "%x2aminusx1a%x%y2aminusy1a%" result.pdf

result.pdf 看起来不错,但我对生成的文件大小不满意:将所有 outputXXX.png 文件的文件大小相加,它们是原始 input.pdf 的两倍多!(将它们裁剪并重新组合到 result.pdf 文件中并没有太大变化,所以这一步似乎没问题。)

我怀疑色彩空间有问题——有没有办法保留单色色彩空间而不是使用-colorspace gray?我找不到像 -colorspace 单色这样的东西。另一方面,添加类似

magick p*.png -monochrome m%%03d.png

将 png 文件的大小减少了 40%,但由所有 m*.png 文件组成的最终 result.pdf 再次是(单色)png 文件大小总和的两倍多,因此这一步可能有问题在文件大小(和/或colar空间处理)方面也是如此。

有人可以帮忙吗?任何如何解决这个问题的提示都非常感谢 - 而像“你为什么不完全放弃 ImageMagick 并改用 XYZ ?”这样的答案。如果没有更多细节,对我来说可能有点难以实现。;-) 提前致谢!

PS 在 Windows 10 Home 20H2 系统上使用 ImageMagick 7.0.10-30 Q16 x64 2020-09-19。

标签: pdfimagemagickpngcropmonochrome

解决方案


推荐阅读