我的讲师分发的幻灯片演示文稿的 PDF 文件通常包含大量页面,因为每个动画步骤都会生成一个新页面(有时每张幻灯片 20 页)。
如果您想在屏幕上观看幻灯片放映,这很好。但我想打印幻灯片,为了节省纸张,我宁愿只打印完整的幻灯片(在所有动画步骤发生之后)。
这些 PDF 的结构如下:
Page: 1/12, slide: 1
Page: 2/12, slide: 1
Page: 3/12, slide: 1 -> complete first slide (this is what I want to print)
Page: 4/12, slide: 2
...
我注意到,evince 实际上会跟踪我们所在的幻灯片。它在实际页码旁边显示幻灯片编号(如上所述)。因此,显然幻灯片编号保存在 PDF 文件中,应该可以识别哪一页是一张幻灯片的最后一页并仅打印该幻灯片。
所以我的问题是:有没有办法使用 pdftk 或 GS 或类似工具提取每张幻灯片的最后一页(使用相同幻灯片编号的最后一页)?
注:我认为这个问题一定很常见,但我找不到任何类似的帖子。如果这是重复的,我深表歉意。
答案1
这是一个执行此操作的脚本,适用于 Marco 评论中的示例。它利用pdftk
.
#!/bin/sh
PAGES=$(pdftk $1 dump_data |
grep PageLabelNewIndex |
cut -d' ' -f2 |
xargs -n1 expr -1 + |
tail -n+2 |
tr '\n' ' ');
# Add last page
PAGES="${PAGES} $(pdftk $1 dump_data |
grep NumberOfPages |
cut -d' ' -f2)";
pdftk $1 cat ${PAGES} output $2
将输入文件作为第一个参数,将输出文件名作为第二个参数。