如何在终端中将PDF中的单页每日规划页重复60次生成PDF文件
如何在终端中将PDF中的单页每日规划页重复60次生成PDF文件
哈哈,完全不用搞那种循环复制再合并的笨办法!终端里有好几个优雅的工具能直接帮你把单页重复指定次数,下面给你几种常用的方法:
方法一:用 pdftk(或 pdftk-java)
这是处理PDF的经典工具,操作直观:
- 如果你的原PDF本身只有那一页每日规划,直接执行这条命令就能生成60页的新PDF:
解释一下:pdftk planner.pdf cat $(printf '1 %.0s' {1..60}) output 60-planner.pdfcat $(printf '1 %.0s' {1..60})就是告诉pdftk把原文件的第1页重复60次,最后输出到60-planner.pdf。 - 如果原PDF里有多个页面,目标是第N页(比如第3页),只要把命令里的
1改成对应的页码就行:pdftk planner.pdf cat $(printf '3 %.0s' {1..60}) output 60-planner.pdf
方法二:用 qpdf(更简洁高效)
qpdf是另一个强大的PDF处理工具,语法更简洁:
- 同样,原PDF是单页的话,执行:
解释:qpdf planner.pdf --pages . 1-z:60 -- 60-planner.pdf--pages . 1-z:60表示从当前文件(.)中,把第1页重复60次(1-z:60的意思是“第1页到最后一页,但重复60轮”,这里单页就相当于重复60次)。 - 目标是第N页的话,把
1换成N即可:qpdf planner.pdf --pages . 3-z:60 -- 60-planner.pdf
方法三:用 Ghostscript(gs)
如果你已经装了Ghostscript,也可以这么做,虽然和你说的“复制再合并”思路类似,但不用手动生成60个副本:
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=60-planner.pdf $(printf 'planner.pdf ' {1..60})
参数说明:-q 静默输出,-dNOPAUSE -dBATCH 让处理完所有文件后自动退出,-sDEVICE=pdfwrite 指定输出为PDF格式,后面重复60次原文件名就相当于把它合并60次。
工具安装(如果没装的话)
- Debian/Ubuntu 等 Debian 系系统:
# 安装 pdftk-java sudo apt install pdftk-java # 安装 qpdf sudo apt install qpdf # 安装 Ghostscript sudo apt install ghostscript - macOS(用 Homebrew):
brew install pdftk-java qpdf ghostscript
备注:内容来源于stack exchange,提问作者user606723




