Проблема с переполнением изображения dompdf
У меня проблема с созданием PDF, в настоящее время моя система использует dompdf для преобразования HTML в PDF, все это прекрасно работает. Однако, если пользователь вставляет изображение, которое больше, чем на странице формата А4, файл PDF плохо крепится, и все содержимое под большим изображением сжимается или вообще не отображается.
Вот два PDF файла, чтобы показать пример проблемы
Это хорошо [/p >
https://dl.dropbox.com/u/65878041/OK.pdf
Этот, который вы видите, когда первое изображение больше, чем на странице А4, все содержимое, полученное после печати, должно быть таким же, как и предыдущее.
https://dl.dropbox.com/u/65878041/Issue.pdf
То, что я идеально хотел бы сделать, это разбить изображение на части и охватить его как можно больше страниц. Как то, что сделано в этом решении LaTeX. Есть ли возможность сделать это с dompdf? или любую другую библиотеку PHP для выполнения HTML в PDF?
Я просмотрел его сам, и, очевидно, я мог бы нарезать изображение, если оно больше, чем A4. Но проблема заключается в таком подходе, который должен знать, есть ли текст на странице перед рукой или что-то в этом роде, так что это не так просто.
Спасибо всем заблаговременно. Любое понимание было бы очень оценено.
Ответы
Ответ 1
Мне было бы гораздо полезнее, если бы вы отправили вам html и css...
У вас есть две вещи:
Вариант № 1
Попробуйте обернуть ваши изображения в дополнительном DIV и явно установить правила ширины и переполнения.
Вариант № 2
До того, как я был большим поклонником dompdf
, но после обнаружения wkhtmltopdf
никогда не оглядывался назад. wkhtmltopdf
- феноменальный инструмент, который выполняет работу правильно. Чтобы попробовать это решение, выполните следующие действия:
- Загрузите статический двоичный файл из домашней страницы проекта, это определенная архитектура, поэтому выберите правильный... вы можете скачать оба; во время выполнения обнаруживают архитектуру и загружают соответствующие двоичные файлы
- Поместите файл в какой-либо каталог, доступный вашему проекту, например.
/path/to/my/proj/bin/wkhtmltopdf
- Запустите свой script и создайте html-документ; сохраните его в каком-то файле tmp
file_put_contents('/tmp/myfile.html', $html);
- Запустите команду преобразования
shell_exec('/path/to/my/proj/bin/wkhtmltopdf /tmp/myfile.html /tmp/myfile.pdf')
-
Получить содержимое сгенерированного PDF файла, изменить заголовки ответов и серверный файл:
header('Content-Type: application/pdf');
echo file_get_contents('/tmp/myfile.pdf');
Ответ 2
Я не знаю, как отображаются изображения, но вы можете сказать dompdf разделить страницы после или перед определенным элементом. Например:
<div style='page-break-after:always;'>
<img src="PATH_TO_IMAGE" />
</div>