使用 pdftk 按创建日期合并多个 pdf 文件

使用 pdftk 按创建日期合并多个 pdf 文件

我有几个 pdf 文件,我想使用 pdftk 合并这些文件。我可以这样做

C:\pdftk *.pdf cat output merged.pdf

这会使用字母顺序合并文件,但我想使用创建日期(时间戳)对文件进行排序。这怎么可能?我使用的是 Win XP。

答案1

我认为最好的方法是将日期添加到文件名中。你可以这样做批量重命名实用程序,它是一款非常强大的实用程序,而且免费。

或者,您可以使用其他软件通过 GUI 合并/拆分 pdf 文件,例如 PDFsam。

答案2

您可以创建按创建日期排序的 PDF 文件列表:

 dir /b /tc /od *.pdf > my-pdf-filelist.txt

(如果您想要列表 - 而不是按创建时间排序 - 按访问时间排序,请使用' /ta'而不是' /tc';如果您想要按修改时间排序,请使用' /tw'。)

然后使用此列表创建另一个临时列表文件,其中包含时间戳和 PDF 文件名,并在同一行添加日期 + 时间:

 for /f "usebackq" %i in (my-pdf-filelist.txt) ^
        do (echo. %~ti %~nxi >> my-pdf-filelist.2)

现在检查你的文件列表是否my-pdf-filelist.2包含如下行:

05/27/2009 06:08 AM fontproblems-in-footer-16_9_1557.pdf
01/20/2010 09:22 AM trainschedule-hannover.pdf
06/05/2010 07:30 PM Figure_001-a.pdf

根据语言和区域设置的设置,时间戳格式可能会有所不同,您可能需要调整以下步骤。就我而言,我需要处理“AM/PM”以及日期字符串,以确保文件名稍后的字母顺序与时间戳顺序相同。

最后,使用此临时列表文件重命名原始文件名,以便它们包含时间戳作为其原始名称的前缀。但首先测试预期的命令如下:

 for /f "usebackq tokens=1,2,3,4,5,6,7 delims=/: " %i in (my-pdf-filelist.2) ^
        do (echo.  "%o"  will be renamed to:  "%k-%j-%i-%n-%l-%m-%o")

仔细检查这是否能按预期工作。最后,进行真正的重命名:

 for /f "usebackq tokens=1,2,3,4,5,6,7 delims=/: " %i in (my-pdf-filelist.2) ^
        do (ren "%o"  "%k-%j-%i-%n-%l-%m-%o")

现在您的 PDF 的命名方式使得“字母顺序”==“时间戳顺序”,您可以简单地运行pdftk.exe

 pdftk.exe *.pdf cat output merged.pdf

相关内容