2016-07-21 2 views
0

я пытаюсь создать много файлов PDF с помощью букле и поместить его в определенном месте, но я получаю эту ошибку:не может создать много файлов PDF с помощью DOMPDF

DOMPDF_Exception 

File: 
C:\wamp\www\leadmarket\vendor\dompdf\dompdf\include\inline_positioner.cls.php:37 
Message: 
No block-level parent found. Not good. 

вот мой код:

for($i = 0 ; $i < 3 ; $i++){ 
    $pdf = new PdfModel(); 
    $pdf->setOption("paperSize", "a4"); //Defaults to 8x11 
    $pdfView = new ViewModel($pdf); 
    $pdfView->setTerminal(true) 
      ->setTemplate('application/annonceur/generer-facture-mensuelle.phtml') 
      ->setVariables(array(
       'client' => $i 
       ) 
      ); 
    $html = $this->getServiceLocator()->get('viewpdfrenderer')->getHtmlRenderer()->render($pdfView); 
    $eng = $this->getServiceLocator()->get('viewpdfrenderer')->getEngine(); 

    $eng->load_html($html); 
    $eng->render(); 
    $pdfCode = $eng->output(); 
    file_put_contents('public/folder/file-'.$i'.pdf', $pdfCode); 
} 
+0

Я бы рекомендовал вместо этого использовать TCPDF :) – Barry

ответ

1

DOMPDF в настоящее время только поддерживает рендеринг одного документа для каждого экземпляра (issue #1056). Пока эта проблема не будет решена, вам необходимо отменить экземпляр Dompdf и создать новый.

Похоже, вы создаете экземпляр в цикле вашего PdfModel и ViewModel, но экземпляр DOMPDF является частью класса, который содержит свой цикл ($this->getServiceLocator...).

Я не знаком с каркасом, который вы используете, поэтому я не могу дать вам конкретный ответ. Самое быстрое решение - не использовать экземпляр Dompdf, который является частью вашего экземпляра ServiceLocator.

Заменить

$eng = $this->getServiceLocator()->get('viewpdfrenderer')->getEngine(); 

С

$eng = new Dompdf(); 
$eng->setOption("paperSize", "a4"); 

Как вы видите размер бумаги должен быть установлен снова, и это недостаток. Любые параметры, настроенные в ServiceLocator, будут потеряны.

+0

Большое спасибо, вы указали именно эту проблему. – user3911183

+0

Просто точка, я использую zf2, поэтому для тех, кто может столкнуться с одной и той же проблемой, я заменил ее на $ eng = new \ DOMPDF(); :) – user3911183

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

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