【问题标题】:Bash - Extract certain pages of all PDF in a folder/foldersBash - 提取文件夹/文件夹中所有 PDF 的某些页面
【发布时间】: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 细分为三个文件夹 abc

在文件夹 a 中的所有 pdf 中,我只想提取第三页(就像上面一样),在文件夹 b 我希望只提取第四页,在文件夹 c 我希望有第三页和第四页已提取。所有提取的页面都应在 tiff 中,与原始 pdf 名称相同。完成后,所有三个文件夹中的所有 pdf 都可以丢弃。

我怎样才能做到这一点?

【问题讨论】:

  • 我不相信pdftk 会在cat 输出过程中转换为.tiff。您的命令对于提取第 3 页是正确的,但您需要将其输出为 .pdf(例如 "${i%.pdf}_pg3.pdf"),然后使用 Imagemagick convert 对每个 *_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

标签: bash macos pdf terminal


【解决方案1】:

需要 GNU Parallel 20160422:

doit() {
  parallel pdftk {} cat "$2" output - '|'convert pdf:- {.}.tiff ::: "$1"/*pdf;
}
export -f doit
parallel doit ::: a b c :::+ 3 4 3-4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多