使用 PDFTK 合并 PDF 文件

使用 PDFTK 合并 PDF 文件

我有一个包含 PDF 文件的目录,如下所示:

2016_AAA_SomeRandomText1.pdf
2016_BBB_SomeRandomText1.pdf
2016_AAA_SomeRandomText2.pdf
2016_BBB_SomeRandomText2.pdf
2016_AAA_SomeRandomText3.pdf
2016_BBB_SomeRandomText3.pdf
...

注意:SomeRandomText3.pdf 会发生变化,但是是成对的。

因此,我想通过 Windows CLI 使用 FOR 循环遍历文件夹,并使用 PDFTK 为每对 SomeRandomText 生成一个 PDF 文件。因此,输出将如下所示:

2016_AAA_SomeRandomText1.pdf + 2016_BBB_SomeRandomText1.pdf = 2016_SomeRandomText1.pdf
2016_AAA_SomeRandomText2.pdf + 2016_BBB_SomeRandomText2.pdf = 2016_SomeRandomText2.pdf
2016_AAA_SomeRandomText3.pdf + 2016_BBB_SomeRandomText3.pdf = 2016_SomeRandomText3.pdf
...

这是我目前所拥有的(假设我在工作C:\user\pdfs):

FOR /R %I IN (*.pdf) DO pdftk 

答案1

这对我来说是有效的,经过测试:

替换"%~dp0"为你的“实际”路径"C:\user\pdfs"

@echo off && cd /d "%~dp0"

for /f tokens^=1-3^delims^=_ %%i in ('^^^< nul where ".:*.pdf"')do if not exist "%%~i_%%~nk%%~xk" (
     "C:\Program Files (x86)\PDFtk\bin\pdftk.exe" "%%~i_*_*%%~nk%%~xk" cat output "%%~i_%%~nk%%~xk"
    )

for此循环和条件的结果if类似:

if not exist "2016_SomeRandomText1.pdf" ( 
    "C:\Program Files (x86)\PDFtk\bin\pdftk.exe" "F:\2020-SU\Q1058228\2016_*_SomeRandomText1.pdf" cat output "F:\2020-SU\Q1058228\2016_SomeRandomText1.pdf"
    ) 

答案2

我会告诉你我是如何在 bash 中做到这一点的,也许你可以翻译它。

我使用pdfunite(比更直接一点pdftk),但是一旦你弄清楚了语法,它就很容易了。

for AFILE in `ls 2016*AAA*.pdf`
## For each of the files starting with 2016_AAA
do
   BFILE=`echo $AFILE | sed -e 's/AAA/BBB/'`
## I use stream editor to replace the AAA with BBB and define the
## new file name.  You can probably use SUBSTITUTE in Win
   pdftk $AFILE $BFILE cat output OUTPUT-$AFILE
## This will combine $AFILE and BFILE into OUTPUT-AFILE
done

希望这可以给你一个开始。

相关内容