如何自动复制 PDF 文件中的页面?

如何自动复制 PDF 文件中的页面?

我有很多 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工具来执行您想要的操作。详细信息取决于您的操作系统。我假设您想要整个文件的两个副本,而不是每个页面都复制两份。

  1. Linux/OSX/Unix 等

    for n in *pdf; do convert -density 150 "$n" "$n" "$n"; done
    

    这将覆盖现有文件,您可能需要先备份。

  2. 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}

答案4

要将 PDF 多次复制到新的 PDF 中,我更喜欢pdfjam在 Windows 中这可能很难实现,但在 Linux 中(或通过wsl在 Windows 中,该texlive-extra-utils包应该很容易安装。

我这样使用它:

pdfjam input.pdf 1,1 --a4paper --scale 0.97 --pdftitle Title... --outfile output.pdf

pdfjam相比之下,其优势在于pdftk:生成的 PDF 要小得多。复制结果而不复制实际数据!

相关内容