目标是使用枚举一组 .pdf 文件命令行工具。理想情况下,免费的开源包将有助于在 Catalina 和 Ubuntu 20.04 上执行枚举任务。
假设一组文件:
- 文件1.pdf
- 文件2.pdf
- 文件3.pdf
算法:
- 仅将计数器初始化为 100 一次:永远不要重置为 100
- 从 file1.pdf 的第一页开始:
- 用“myText [counter]”枚举(标记)右下角
- 增加计数器并标记下一页
- 如果文件的最后一页已被枚举,则对下一个文件重复该过程,直到枚举所有文件的所有页。下一个文件将继续使用相同的计数器,该计数器不会重置为 100。
实现目标的解决方案/示例受到赞赏。
澄清:
所有页面都应具有唯一的页码:如果每个文档有 10 页,则最后页码将为 129。
答案1
修订问题的更新...
#!/bin/bash
label="$1" #the label to be added to the footer
from=$2 #the starting number
#for each pdf in this directory
for input in *.pdf; do
#compose an output file name
output=${input%.*}.numbered.pdf
#count the pages
pagenum=$(pdftk "$input" dump_data | grep "NumberOfPages" | cut -d":" -f2)
#calculate the last page no
to=$(($from+$pagenum-1))
(echo -e ".nr FM 0.125i\n.ds CH"; for s in $(seq -f "%05g" $from $to); do
echo -e ".ds RF $label $s \n.bp +1"; done) |
groff -ms -Tpdf |
pdftk "$input" multistamp - output "$output"
#get ready for the next file
from=$((to +1))
done
编写一个包含空白页面的基本文档,除了包含所需文本的groff -ms
右页脚之外,其中是我用 0 填充的页码.ds RF
$label $s
$s
seq -f "%05g"
groff -ms
宏应用页眉,该页眉被抑制.ds CH
并.nr FM 0.125
减少页脚边距高度,因此每个“页面”只是带有分页符的页脚.bp +1
将此文本通过管道传输到创建一个 pdf ,groff -Tpdf
然后pdftk
通过 stdin管道传输到输入文件,最后写入输出文件。-
multistamped
如果这是一个黑客行为,我向任何真正知道如何groff
正确使用的人致歉……直到今天我什至都没有看过它。