Проблема с переполнением изображения 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>