将 .pdf 文件与 Pdftk 合并

Merging .pdf files with Pdftk

我的文件夹中有很多 .pdf 个文件。我还有一个与 Pdftk 程序一起工作的 .bat 脚本。但是当我执行 .bat 它不工作。

按照我的脚本:

@echo off
setlocal enabledelayedexpansion
FOR %%A IN (%*) DO (set command=!command! %%A)
pdftk.exe %command% cat output "%~dp1binder.pdf"

我的 .pdf 文件、.bat 脚本和 pdftk.exe 及其 libiconv2.dll 都在同一个文件夹中。

有人可以帮助我吗?我需要合并文件夹中的所有 .pdf 个文件。

谢谢!


伙计们,这个简单的命令对我来说工作正常,只有一个问题。如果没有命令中的文件,则不会处理。 看剧本:

@echo off
pdftk fbw1.pdf fbw2.pdf fbw3.pdf fbw4.pdf fbw5.pdf fbw6.pdf fbw7.pdf fbw8.pdf fbw9.pdf fbw10.pdf fbw11.pdf fbw12.pdf fbw13.pdf fbw14.pdf fbw15.pdf fbw16.pdf fbw17.pdf fbw18.pdf fbw19.pdf fbw20.pdf fbw21.pdf fbw22.pdf fbw23.pdf fbw24.pdf fbw25.pdf fbw26.pdf fbw27.pdf fbw28.pdf cat output testieee.pdf >nul 2>nul

例如:如果我没有文件 fbw1.pdf 进入目录,它不会处理任何东西。我需要程序处理所有文件甚至丢失一个或多个...

有人帮忙吗?

谢谢!


好的,命令 pdftk *.pdf cat output combined.pdf 现在可以工作了,但它不会按顺序合并 .pdf 文件。 例如:1.pdf 2.pdf 3.pdf....是我想要的序列,但是命令合并是这样的:1.pdf 3.pdf 2.pdf 7.pdf.... There's a way to recognize the sequence?

谢谢

编辑新方法。

  • 如果您将文件或文件夹拖放到批处理中或传递至少一个 file/folder
  • 下一批将​​更改为引用的文件夹并且
  • 处理该文件夹中的所有 pdf 文件,将它们合并到 binder.pdf
  • 最终存在的 binder.pdf 重命名为 binder.bak.pdf

:: Q:\Test18\SO_50728273.cmd
@echo off
setlocal enabledelayedexpansion
if "%~1" neq "" (
  Echo %~a1|findstr "d" 2>&1>Nul && Pushd "%~f1" || Pushd "%~dp1"
) else (
  Echo No arguments, need a path& pause & goto :Eof
)
Del /f binder.bak.pdf 2>&1>Nul
if exist binder.pdf Ren binder.pdf binder.bak.pdf
pdftk.exe *.pdf cat output binder.pdf
PopD

不知道你传递给批处理诊断的参数是不可能的。%* 被你传递的所有参数替换,输出的位置由第一个参数 %~dp1 的路径决定

我 运行 你的批次在我的 ramdisk a:

之前的目录:

> dir A:\
 Verzeichnis von A:\

2018-06-06  21:57            65.381 SO_5072812.pdf
2018-06-06  21:56               163 SO_50728273.cmd
2018-06-06  21:55            60.649 SO_50728273.pdf
               3 Datei(en),        126.193 Bytes
               0 Verzeichnis(se),  1.049.452.544 Bytes frei

之后(我将批次命名为 SO_50728273.cmd):

> SO_50728273.cmd a:\*.pdf

> dir
 Verzeichnis von A:\

2018-06-06  21:58           125.756 binder.pdf
2018-06-06  21:57            65.381 SO_5072812.pdf
2018-06-06  21:56               163 SO_50728273.cmd
2018-06-06  21:55            60.649 SO_50728273.pdf
               4 Datei(en),        251.949 Bytes
               0 Verzeichnis(se),  1.049.260.032 Bytes frei

我也遇到了同样的问题,我来了。我想我有一个更好的主意。它可能对你有帮助,或者人们将来会来这里。

对于我的情况,

ls *.pdf > list    
for i in `seq 1 340`;do grep "\-$i\-\-" list >> tmp; done
awk '{printf("%s ", [=10=])}' tmp > oneline
pdftk `cat oneline` cat output test.pdf

针对您的情况

第一步把所有的文件名放到一个文件里,比如namelist。

ls *.pdf > namelist

第2步排序名单,建议有400个文件。

for i in `seq 1 400`;do grep $i namelist >> sortedNameList;done

第 3 步重新组织 sortedNameList。

awk '{printf("%s ", [=13=])}' sortedNameList > namesInOneline

第 4 步将所有文件合并为一个 pdf 文件

pdftk `cat namesInOneline` cat output final.pdf