2010-01-22 6 views
4

Я в процессе создания динамического pdf-файла, который содержит данные около 10 000 пользователей, в общем случае приложение разрабатывается с использованием MySQL и PHP. Динамический контент настолько тяжелый, что мне было сложно обрабатывать класс fpdf(). Поэтому я преобразовал мою выходную PHP-страницу в виде HTML-файла, используя ob_get_clean(). Теперь html-файл сгенерирован успешно, а также файл pdf. Но я хочу оставить разрыв страницы после данных каждого пользователя, то есть данные каждого пользователя должны начинаться на новой странице. Я не мог использовать HTML-теги, потому что в динамически сгенерированном HTML-файле все не соответствует тегам <html> и </html>. Пожалуйста, помогите мне, так что некоторые, как я сделать разрыв страницы в файл в формате PDF после данных каждого пользователя ... Спасибо заранее :)Разрыв страницы в Html2Pdf

ответ

2

я просто понял это, имея ту же проблему. синтаксический анализатор, который они используют, поддерживает тег 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(); 
+1

Это просто кинул в некоторые ошибки: Undefined индекс: стр-обкатки после в html2pdf.class.php на линии 4165 –

+0

Изменение третьего партия код не лучшая практика, если есть другие способы (см. ответ от @Andon Totev) – naitsirch

1

Вы, возможно, хотите использовать некоторые CSS, например:

h1 {page-break-before:always} 
10

Основываясь на работе 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 должен содержать перерыв элемент

<div style="page-break-after:always; clear:both"></div> 

Берегитесь случае чувствительного стиля, не уверен, что если плагин обрабатывать его

+0

Это сработало. Благодаря! –

+0

После завершения изменений новая страница должна начинаться сразу после последней порции, но оставлена ​​пустой страницей, после чего начинается –

+0

@ThanhTrung Это работает, но, как упоминалось выше, не начинается в верхней части страницы. Вместо этого он оставляет всю пустую страницу между текстом (например, следующая страница не запускается до тех пор, пока она не вернется туда, где остановилась предыдущая страница). – James

9

html2pdf поддерживает страница тег:

protected function _tag_open_PAGE($param) {} 

в строке 2229. Вы можете видеть, какие атрибуты поддерживаются.Например следующий создает одну страницу в альбомной и один в портретном режиме:

<page orientation="l"> 
... some content ... 
</page> 
<page orientation="p"> 
... some content ... 
</page> 
+0

Это легко лучший ответ. – Luka

+0

это работает для меня .. :) –

+0

должен быть установлен как лучший ответ, он работает без изменения кода – Froggiz

Смежные вопросы