PHP, PDF: разделить большой одностраничный PDF-файл на другой многостраничный PDF-файл размером с несколько букв

#php #pdf #imagemagick #fpdf

Вопрос:

У меня есть PDF-файл с рисунком для шитья. Это одна страница, 24 «h x 96 «l. Цель состоит в том, чтобы распечатать его на столько страниц размером с буквы, сколько потребуется, чтобы его можно было повторно собрать для использования в реальном мире.

В Foxit в Windows есть возможность «разбивать большие страницы» при печати, но единственный способ, который я нашел, чтобы это произошло в Linux, — это pdfposter. Это работает нормально, но результат не идеален, поэтому я решил создать свой собственный.

Используя расширение PHP imagemagick, я могу преобразовать PDF-файл в изображение и вырезать из него фрагменты размером с страницу. Затем я могу использовать FPDF, чтобы взять обрезанный фрагмент и поместить его на страницу. Повторяйте, пока у меня не закончится изображение.

Это способ продолжить? Или есть способ пропустить шаг imagemagick? Я был по всему Интернету, но я не нашел никого, кто пытался бы ответить на этот вопрос.

Ответ №1:

Вы можете импортировать страницу PDF в FPDF с помощью FPDI. Импортированную страницу можно масштабировать и изменять ее размер, как вы бы делали с изображением.

У нас (Setasign) нет демо-версии для этой задачи с FPDF / FPDI на нашем веб-сайте, но с SetaPDF. Вы можете использовать ту же логику с FPDF / FPDI. Демонстрацию можно найти здесь.

Комментарии:

1. Это выглядит действительно хорошо. Вопрос: Я бы предположил, что useImportedPage — это то, что я хочу использовать, да? x, y, width, height установите размер «окна» из нужного мне большого изображения, adjustpagesize = false, чтобы сохранить масштаб. У меня правильная идея? (Я не могу найти объяснение в документах.)

2. Фиксированный формат? Нет, но конечный размер страницы определяется шаблоном: меньшие люди создают меньшие шаблоны. Я не понимаю, что вы подразумеваете под «нормальным соотношением листов». Кроме того, правильно ли я понимаю useImportedPage?

3. для параметра $adjustpagesize должно быть установлено значение false, конечно! В демонстрации используется исходный размер страницы для результирующего размера страницы, да, я пропустил 24 «h x 96 «l для букв.