我有很多 PDF 文件,每个文件有 1 到 4 页。我需要一个解决方案,可以为每个文件自动生成一个新文件。新文件应包含原始文件内容的两倍(即从第 1 页到最后,然后再次按相同顺序显示相同的页面)。
我如何实现这个目标?
答案1
Windows 的解决方案PDFtk(根据您的标签您似乎正在使用它):
这将导致 PDF 的页面从 1 开始,然后又从 1 开始:
pdftk in.pdf cat 1-end 1-end output out.pdf
如果您希望将每一页都复制在一起(如 1,1,2,2,...),请使用以下批处理文件:
@echo off
set pages=
setlocal enabledelayedexpansion
for /f "tokens=2" %%a in ('pdftk in.pdf dump_data ^| find /i "NumberOfPages"') do for /l %%b in (1,1,%%a) do set pages=!pages! %%b %%b
pdftk in.pdf cat!pages! output out.pdf
答案2
如果您回答我评论中的问题,我可能会给您一个更好的解决方案,但为了您妻子的利益,这里有几个建议。
图像魔术师是一个用于图像处理的跨平台命令行工具。安装后,您应该能够使用它的convert
工具来执行您想要的操作。详细信息取决于您的操作系统。我假设您想要整个文件的两个副本,而不是每个页面都复制两份。
Linux/OSX/Unix 等
for n in *pdf; do convert -density 150 "$n" "$n" "$n"; done
这将覆盖现有文件,您可能需要先备份。
Windows。这可能有点不对,我不使用 Windows,所以我无法测试它,但总体思路应该是这样的
for %f in (*.pdf) do (convert.exe %f %f %f)
答案3
如果您希望在 Linux 上将每个页面一起复制(如 1,1,2,2,...),则此脚本将执行此操作:
#!/bin/bash
INPUTFILE=$*
PAGENUM=`pdftk ${INPUTFILE} dump_data | grep NumberOfPages | cut -d : -f 2 | cut -d " " -f 2`
PAGES=`seq 1 ${PAGENUM}`
DUPAGES=`for i in ${PAGES} ; do echo $i $i | tr "\n" " " ; done`
OUTPUT=`basename ${INPUTFILE} .pdf`.dup.pdf
pdftk ${INPUTFILE} cat ${DUPAGES} output ${OUTPUT}