【问题标题】:Remove First Page from a Series of PDFs从一系列 PDF 中删除第一页
【发布时间】:2010-10-16 08:56:46
【问题描述】:

我有一系列 PDF (Computer Gaming World issues),我想从每个问题的 pdf 文件中删除第一页。有 100 个问题,所以 GUI 是不能解决问题的。我使用 pdftk 从一个问题中删除了第一页:

pdftk 1981_1112_issue1.pdf cat 1 output 1.pdf

我的问题是我不想为每个 pdf 问题修改和运行此命令,因为这并不比 GUI 方法好多少。

使用 *.pdf 作为输入似乎不起作用。我可以使用哪些其他方式在每个 PDF 上运行 pdftk?

【问题讨论】:

  • 问题的命名有规律吗?
  • 不完全是……你会注意到年份是文件名中的第一个词,而且年份肯定会有所不同。但我可以轻松地批量重命名...
  • 所有文件的名称中都有“问题”吗?
  • 确实如此。都是 year_quarter_issue#.pdf。另外, pdftk _issue.pdf cat 1 output *.pdf 似乎提供了正确的输入,但是我该怎么称呼输出文件呢?
  • 您的示例命令不会从输入 PDF 中删除第一页。它将输入中的第一页提取为单页输出 PDF (1.pdf) 并保持输入不变。

标签: bash pdf pdftk


【解决方案1】:

循环处理所有问题。通过将“问题”替换为“输出”来以问题命名输出。第一行提取第1页,第二行提取其他页面:

for issue in *_issue*.pdf
do
    pdftk ${issue} cat 1 output page1_${issue/issue/output}
    pdftk ${issue} cat 2-end output otherpages_${issue/issue/output}
done

【讨论】:

  • 哦,我明白这是怎么回事了。我做了一些编程,但我没有意识到变量在 bash 中是如何工作的。你到底在用 ${issue/issue/output} 做什么?
  • ${a/b/c} 将 a 变量内容中的 b 子字符串替换为 c 子字符串。
【解决方案2】:
shopt -s nullglob
for file in *.pdf
do
 out=${file%.pdf}_page1.pdf
 pdftk "$file" cat 1 output "$out"
done

【讨论】:

  • 我喜欢这个答案,因为它直截了当。店铺线有必要吗?
猜你喜欢
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多