Мне нужно объединить несколько дозированных PDF-файлов, и я хочу, чтобы все входные PDF-файлы начинались на нечетной странице выходного PDF-файла.
Пример: A.pdf
имеет 3 страницы, B.pdf
имеет 4 страницы. Я не хочу, чтобы мой вывод содержал 7 страниц. Мне нужен 8-страничный PDF, в котором страницы 1-3 взяты A.pdf
, страница 4 пуста, а страницы 5-8 взяты B.pdf
. Как я могу это сделать?
Я знаю о pdftk, но я не нашел такой опции на странице руководства.
./pdf-cat-even $(cat list-of-file-names.txt) >concatenated.pdf
<list-of-file-names.txt tr '\n' '\0' | xargs -0 ./pdf-cat-even >concatenated.pdf
Первый шаг - создать PDF-файл с пустой страницей. Вы можете легко сделать это с помощью множества программ (LibreOffice / OpenOffice, inkscape, (La) TeX, scribus и т. Д.)
Затем просто включите эту пустую страницу, где это необходимо:
Если вы хотите сделать это автоматически с помощью скрипта, вы можете использовать, например,
pdftk file.pdf dump_data | grep NumberOfPages | egrep -o '[0-9]*'
чтобы извлечь количество страниц.источник
pdftk --version
возвращает pdftk 1.44. Я помню, что мои более подкованные друзья провели, по крайней мере, 15 минут, пробуя разные вещи, чтобы получить эту работу, и бросили.Ответ Жиля сработал для меня, но, поскольку мне нужно объединить много файлов, мне удобнее читать их имена из текстового файла. Я немного изменил код Жиля, чтобы сделать это, может быть, это поможет кому-то еще:
источник
Вы также можете использовать LaTeX для этого (хотя я знаю, что это, вероятно, не то, что вы хотите). Должно работать что-то вроде следующего:
Обратите внимание, что
\cleardoublepage
вставляется только пустая страница с классами, созданными для двусторонней печати (например, книга)Больше опций и информации
pdfpages
можно найти на CTAN .источник
\includepdf[pages=-]{...}
.\cleardoublepage
вставляет пустую страницу, только если вы используете класс, созданный для двусторонней печати. Я использовал статью, которая не работает; Я исправил это и обновил вопрос, чтобы отразить это.\includepdf
по умолчанию включает только первую страницу (не все страницы).\documentclass[twoside]{article}
работает также.Вот код с PyPDF2 и python3
источник