У меня есть несколько файлов PDF, и я хотел бы объединить эти файлы с помощью pdftk. Я могу сделать это так

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

Это объединяет файлы в алфавитном порядке, но я бы хотел упорядочить файлы по дате их создания (отметка времени). Как это возможно? Я использую Win XP.

2 ответа2

0

Вы можете создать список ваших файлов 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
0

Я думаю, что лучший способ - это добавить даты в имена файлов. Вы можете сделать это с помощью Bulk Rename Utility, это очень мощная и бесплатная программа.

Или вы можете использовать другое программное обеспечение для объединения / разделения PDF-файлов с графическим интерфейсом, например, PDFsam.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .