Объединять PDF-файлы в правильном порядке

645
dshepherd

Я ищу способ (желательно с использованием командной строки в Linux) объединить отдельные PDF-файлы глав книг в один PDF-файл книги в правильном порядке (возможно, на основе номеров страниц в PDF-файлах или некоторых эвристических методов) ,

Поэтому я хочу иметь возможность перейти в каталог, содержащий все отдельные главы, и просто сделать

joinpdf-magic-command *.pdf 

и иметь выходной PDF в правильном порядке.

Я нашел множество инструментов для слияния PDF-файлов ( pdfjoin, pdftk), но все они располагают PDF-файлы в том порядке, в котором они отображаются в командной строке.

редактировать:

Пример списка глав может быть:

1-Introduction.pdf 2-The-analog-digital-interface.pdf 3-Adaptive-digital-systems.pdf 4-Non-linear-applications.pdf 5-Spectral-analysis-and-modulation.pdf 6-Introduction-to-Kalman-filters.pdf 7-Data-compression.pdf 8-Error-correcting-codes.pdf 9-Digital-signal-processors.pdf Appendix-1-Solutions-to-problems.pdf Appendix-2-A-MATLAB-Simulink-primer.pdf Glossary.pdf Index.pdf Preface.pdf References.pdf 

Но для других книг будут другие разделы, их названия могут отличаться, и даже разделы с одинаковыми именами могут даже идти в разных порядках. Вот почему я упомянул, что использование номеров страниц может быть ключевым.

2
пожалуйста, укажите ОС, если вам нужна более конкретная помощь. Вы пытались использовать шаг для переименования файлов в правильном порядке? Julian Knight 8 лет назад 0
Вопросы, связанные с рекомендациями по продуктам, услугам или учебным материалам, не имеют отношения к теме, поскольку они быстро устаревают и привлекают основанные на мнении ответы. Вместо этого опишите вашу ситуацию и конкретную проблему, которую вы пытаетесь решить. Поделитесь своими исследованиями. LPChip 8 лет назад 0
@LPChip Хорошо, я удалил часть о поиске инструмента. Я просто хочу знать, есть ли способ сделать это. dshepherd 8 лет назад 0
@JulianKnight Извините, забыл упомянуть о Linux, добавил, что сейчас. Я мог бы переименовать файлы, но я бы не стал делать это каждый раз вручную. Я сейчас поищу способы сделать автоматическое переименование. dshepherd 8 лет назад 0
ImageMagick `convert` может делать такие вещи, хотя я не знаю точно, как он обрабатывает ваш конкретный случай. Попробуйте: установите ImageMagick, затем `преобразуйте chap1.pdf chap2.pdf chap3.pdf book.pdf` a CVn 8 лет назад 1
@ MichaelKjörling: OMG, вы можете снова удалить свой комментарий, несмотря на то, что он получил голос. Создавать многостраничные PDF-файлы с помощью `convert` - преступление! Это преступление против трезвости и здравого смысла, потому что оно превращает в мясорубку все красивые векторные элементы из содержимого PDF в растровые изображения на всю страницу. Особенно в форме команды, которую вы дали - она ​​будет использовать разрешение по умолчанию 72 DPI, теряя много-много-много-много оригинального качества, и отбрасывая всю информацию о шрифтах, возможности поиска и доступности. Я даже не могу ... Kurt Pfeifle 8 лет назад 2
@KurtPfeifle Пожалуйста. ;-) (Серьезно, именно поэтому я сказал * попробуй это * и * я не знаю точно, как он обрабатывает твой конкретный случай *. В некоторых случаях это правильный подход, в других нужно немного придерживаться, и, как ты отмечаешь, вне, катастрофа в других.) a CVn 8 лет назад 0

2 ответа на вопрос

3
Kurt Pfeifle

There is no magic you can use to sort the chapters of your book automatically -- not, if the file naming convention doesn't support it. This is an act that has to be accomplished by a human.

The only way to do it fast is by putting the ordered filenames into a text file, similar to what you quoted in your OP.

Then simply run:

pdftk $(cat mychapters.txt) cat output book.pdf 
2
Julian Knight

Лично я бы не стал искать новый инструмент, а вместо этого, чтобы обернуть ваш рабочий процесс в сценарий для обеспечения правильного порядка.

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

01ChapterTitleOne.pdf 02ChapterTitleTwo.pdf etc. 

и так далее. Вы можете иметь номер главы в конце (как в примере Майкла), который нарушает сортировку. В этом случае вам следует добавить в сценарий рабочего процесса шаг, который переименовывает файлы, чтобы они упали в правильном порядке.

Пока файлы имеют одинаковые имена, это не должно быть проблемой. Если вы можете поделиться дополнительной информацией об именах, я уверен, что мы можем придумать сценарий BASH для этого.

Как только вы все правильно назвали, вы сможете использовать ту же команду, с которой вы начали, в качестве второго шага сценария рабочего процесса. Если это не сработало, вам понадобится немного более сложный скрипт BASH, который перебирает файлы в правильном порядке.

Все это стандартные вещи для сценариев BASH, но все это связано с последовательным именованием файлов.

Я отредактировал вопрос, чтобы добавить пример. Проблема с таким подходом заключается в том, что вы часто не можете полагаться на имена файлов, чтобы определить порядок (хотя можно было бы сделать правильное предположение с помощью достаточно сложного сценария). dshepherd 8 лет назад 0
Но PDF-файлы на самом деле не содержат структурированных данных, поэтому определение номеров страниц будет очень сложным, возможно, невозможным. Проще работать в обратном направлении и заставить авторов принять соглашение об именах. Julian Knight 8 лет назад 1
Да, похоже на это :( Ну, в любом случае, спасибо. dshepherd 8 лет назад 0

Похожие вопросы