Я в процессе создания динамического pdf-файла, который содержит данные около 10 000 пользователей, в целом приложение разрабатывается с использованием MySQL и PHP. Динамический контент настолько тяжелый, что мне сложно обрабатывать fpdf()
. Поэтому я преобразовал мою выходную PHP-страницу в виде HTML-файла, используя ob_get_clean()
. Теперь html-файл сгенерирован успешно, а также файл pdf. Но я хочу оставить разрыв страницы после данных каждого пользователя, то есть данные каждого пользователя должны начинаться на новой странице. Я не мог использовать HTML-теги, потому что в динамически сгенерированном HTML-файле все из тегов <html>
и </html>
. Пожалуйста, помогите мне, чтобы некоторые из них, как я делаю перерыв страницы в файле pdf после данных каждого пользователя … Спасибо заранее!
Я просто понял это после того, как у меня была такая же проблема. синтаксический анализатор, который они используют, поддерживает тег page-break-after, но html2pdf не работает.
Я думаю, что я работаю, выполнив следующие изменения в html2pdf.class:
вокруг линии 4174, первое, что внутри:
protected function _tag_close_P($param){
должно быть:
if($this->parsingCss->value['page-break-after'] == "always") $this->_setNewPage();
вокруг линии 2961, первое, что внутри:
protected function _tag_close_DIV($param, $other='div'){
должно быть:
if($this->parsingCss->value['page-break-after'] == "always") $this->_setNewPage();
Основываясь на работе macdabby (которая не работает). Но, благодаря ему, идея правильная.
Html2Pdf v4.03
Например, мы хотим проанализировать тег DIV:
html2pdf.class.php строка 2948:
protected function _tag_close_DIV($param, $other='div') { if ($this->parsingCss->value['page-break-after'] == "always") $this->_setNewPage(null, '', null, $this->_defaultTop); $this->parsingCss->setPosition(); ... }
parsingCss.class.php Строка 114:
//add a new style declaration public function initStyle() { ... $this->value['page-break-after'] = null; }
Строка 1024 добавляет новый обработчик к корпусу коммутатора:
case 'page-break-after': $this->value[$nom] = $val; break;
И затем для его работы ваше содержимое html должно содержать элемент break
<div style="page-break-after:always; clear:both"></div>
Следите за стилем, чувствительным к регистру, не уверен, что плагин обрабатывает его
html2pdf поддерживает тег страницы :
protected function _tag_open_PAGE($param) {}
на строке 2229. Вы можете видеть, какие атрибуты поддерживаются. Например, следующее создает одну страницу в альбомной ориентации и одну в портретном режиме:
<page orientation="l"> ... some content ... </page> <page orientation="p"> ... some content ... </page>
Возможно, вы захотите использовать некоторые css, например:
h1 {page-break-before:always}