2015-09-29 2 views
0

Я хочу создать PDF-файл с DOMPDF через динамический контент. Я создаю таблицу, как это:Как я могу правильно разорвать документ с помощью DOMPDF?

<?php 

$language = $this->input->cookie('language'); 
if (!isset($language)) 
{ 
    $language = $core_settings->language; 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta name="Author" content=""/> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <link rel="stylesheet" href="invoice.css" type="text/css" charset="utf-8" /> 

    <style type="text/css"> 
     @page { 
     margin: 0; 
     } 
     .pages { 
     margin: .5in; 
     } 
     .other-pages{ 
     padding:60px; 
     } 
     .first-page { 
     margin: 0in; 
     background-color: black; 
     height: 100%; 
     width: 100%; 
     position:absolute; 
     background-image: url('https://www.example.com/wp-content/uploads/2015/09/example-cover1.jpg'); 
     background-position: bottom center; 
     background-repeat: no-repeat; 
     background-size: 100%; 

     } 
    .first-page + * { 
     page-break-before: always; 
     } 


    </style> 
    </head> 
    <body> 
    <div class="pages first-page"></div> 
    <div class="other-pages"> 
     <h2>Title</h2> 
     <div class="round"> 
     <table id="table" class="tablesorter" cellspacing="0"> 
      <thead> 
      <tr class="header"> 
       <th width="5%">#</th> 
       <th width="95%">Tarea</th> 
      </tr> 
      </thead> 
      <tbody> 
      <?php $i = 0; $sum = 0; $row=false; ?> 
       <?php foreach ($tasks as $task):?> 
       <tr <?php if($row){?>class="even"<?php } ?>> 
        <td><?php echo $i; ?></td> 
        <td><?php echo $task->name; ?><br><?php echo strip_tags($task->description); ?></td> 
       </tr> 
       <?php $i++; endforeach; $row = true; ?> 
      </tbody> 
     </table> 
     </div> 
    </div> 
    </body> 
</html> 

Когда я генерировать PDF у меня есть, как это:

  1. Титульный лист (без края)
  2. TABLE с динамическим содержанием
  3. ПОЛНЫЙ BLANK PAGE (Проблема)
  4. ТАБЛИЦА С ДИНАМИЧЕСКИМ СОДЕРЖАНИЕМ (это та же таблица всегда)

Как я могу исправить пустую страницу?

ПРИМЕЧАНИЕ. Содержимое моей таблицы зависит от содержимого, поэтому высота зависит от содержимого, я не могу добавлять X-поля и разбивать страницу.

ответ

0

Когда dompdf разбивает содержимое на разных страницах, он дублирует стиль элемента. Это означает, что следующий стиль копируется в разделенном элемента, в результате чего разрыв страницы:

.first-page + * { 
    page-break-before: always; 
    } 

Поскольку вы просто хотите разрыв страницы после первой страницы используйте следующую вместо:

.first-page { 
    page-break-after: always; 
    } 

По крайней мере одна проблема была зарегистрирована в связи с этой проблемой: "doubling" of page breaks when page-break-before applied to long element

+0

Привет @BrianS благодарит за ответ меня, я пробую то, что вы сказали, что он не работает. С вашего изменения это будет выглядеть так: BLANK PAGE (полная пустая страница) Титульный лист (фоновое изображение и на фоне того же изображения есть первая часть таблицы динамических ПААГ) DYNAMIC ТАБЛИЦА СТР –

+0

Когда я тестировал с ваш образец выглядел так, как ожидалось, но у меня нет доступа к invoice.css, поэтому может быть некоторый дополнительный стиль, влияющий на макет. Возможно, вам потребуется настроить высоту '. First-page'. dompdf не всегда обрабатывает элемент со 100% высотой страницы, как и следовало ожидать. – BrianS

+0

Привет, Брайан, я стараюсь, как вы сказали (без invoice.css), и не работает, на самом деле мне нужно просто разместить фоновое изображение на первой странице с запасом 0, а затем я хочу напечатать большой динамическая таблица с запасом, но спасибо за помощь =) –

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

  • Нет связанных вопросов^_^