2016-07-21 19 views
0

i viele PDF-Dateien mit einem boucle zu erstellen bin versucht, und es an einem bestimmten Ort gestellt, aber ich diesen Fehler:können nicht viele PDF-Dateien erstellen dompdf mit

DOMPDF_Exception 

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

hier ist mein Code:

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

Ich würde empfehlen, stattdessen TCPDF :) – Barry

Antwort

1

dompdf unterstützt derzeit nur ein einziges Dokument pro Instanz Rendering (issue #1056). Bis dieses Problem gelöst ist, müssen Sie die Dompdf-Instanz aufheben und eine neue erstellen.

Es sieht aus wie Sie eine Instanz pro Schleife Ihrer PdfModel und ViewModel erstellen, aber die dompdf Instanz Teil der Klasse ist, dass Ihre Schleife enthält ($this->getServiceLocator...).

Ich bin nicht vertraut mit dem Rahmen, den Sie verwenden, so kann ich Ihnen keine spezifische Antwort geben. Die schnellste Lösung wäre, die Dompdf-Instanz nicht zu verwenden, die Teil Ihrer ServiceLocator-Instanz ist.

ersetzen

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

Mit

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

Wie Sie das Papierformat sehen musste wieder eingestellt werden, und das ist der Nachteil. Alle im ServiceLocator konfigurierten Optionen gehen verloren.

+0

vielen Dank, Sie wies genau auf das Problem. – user3911183

+0

Nur ein Punkt, ich benutze zf2, also für diejenigen, die das gleiche Problem konfrontiert sein können, ich ersetzte es durch $ eng = new \ DOMPDF(); :) – user3911183