将 .pdf 文件与 Pdftk 合并

问题描述 投票:0回答:3

我的文件夹中有很多

.pdf
文件。我还有一个与
.bat
程序一起使用的
Pdftk
脚本。但是当我执行
.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....
有办法识别序列吗?

谢谢

batch-file pdftk
3个回答
1
投票

编辑新方法。

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

:: Q:\Test\2018\06\06\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 的路径决定

我在我的虚拟磁盘上运行了你的批处理:

之前的目录:

> 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

1
投票

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

就我而言,

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

适合您的情况

第1步将所有文件名放入一个文件中,如namelist。

ls *.pdf > namelist

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

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

第3步重新组织sortedNameList。

awk '{printf("%s ", $0)}' sortedNameList > namesInOneline

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

pdftk `cat namesInOneline` cat output final.pdf

0
投票

我认为最好的解决方案是

pdftk $(ls -v *.pdf) cat output merged.pdf

这解决了问题,并且比此处提供的其他解决方案干净得多。

© www.soinside.com 2019 - 2024. All rights reserved.