【发布时间】:2019-03-13 08:31:01
【问题描述】:
我正在寻找bash 终端的命令来解决以下问题:
我在一个文件夹中有大约 100 个 pdf,我只想从中提取第三页并将其保存为 tiff,并在与原始 pdf 同名的同一文件夹中,然后删除 pdf。
会是这个样子吗?
for i in *.pdf; do pdftk "${i%.pdf}.pdf" cat 3 output "${i%.pdf}.pdf"; convert "${i%.pdf}.pdf" "${i%.pdf}.tiff"; rm *.pdf; done
奖金
我将相同的 100 个 pdf 细分为三个文件夹 a、b 和 c。
在文件夹 a 中的所有 pdf 中,我只想提取第三页(就像上面一样),在文件夹 b 我希望只提取第四页,在文件夹 c 我希望有第三页和第四页已提取。所有提取的页面都应在 tiff 中,与原始 pdf 名称相同。完成后,所有三个文件夹中的所有 pdf 都可以丢弃。
我怎样才能做到这一点?
【问题讨论】:
-
我不相信
pdftk会在cat输出过程中转换为.tiff。您的命令对于提取第 3 页是正确的,但您需要将其输出为.pdf(例如"${i%.pdf}_pg3.pdf"),然后使用 Imagemagickconvert对每个*_pdf3.pdf文件进行后处理以转换为.tiff另一个循环。但是...由于默认安全性阻止从pdf读取,您将需要编辑/etc/Imagemagick.../policy.xml并将pdf的行更改为<policy domain="coder" rights="read|write" pattern="PDF" />What a PITA。为什么.tiff无论如何?将 pg3 保留为.pdf?? -
请参阅Imagick pdf Security,了解有关为什么需要更改政策的更多详细信息。
-
是的,你可以直接用ghostscript来做(这是imagemagick convert调用的),但是为什么呢?您可以使用tesseract 直接在
.pdf上进行OCR。只需安装它。再简单不过了,您将获得更好的转换,因为转换为.tiff会丢失信息。它已经为几乎所有 Linux 发行版打包。 -
是的——它很美——不再需要转换为
.tif。 -
确实如此,通过
libwebp 1.0.2库。只需列出tesseract --version,它就会输出支持的库进行转换。我有libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 2.0.1) : libpng 1.6.36 : libtiff 4.0.10 : zlib 1.2.11 : libwebp 1.0.2