DOMPDF,我不能同时创建两个pdf


DOMPDF, I cannot create two pdf at time

当我尝试一次创建两个pdf时,它会抛出错误。。。

致命错误:未捕获异常"DOMPDF_exception",消息为"No"找到块级父级。不好。"在里面C: ''wamp''www''si2i''application''libraries''dompdf''include''inline_position.cls.php在第38行(!)DOMPDF_Exception:找不到块级父级。不好的在里面C: ''wamp''www''si2i''application''libraries''dompdf''include''inline_position.cls.php在线38

这是代码:

$this->load->library('pdf');
                    $this->pdf->set_base_path($data['path']);
                    $this->pdf->load_view('adm/invoice/si2i',$data);
                    $this->pdf->render();
                    $output = $this->pdf->output();
                    file_put_contents("uploads/invoice/invoice_".$invoice_file_name.".pdf", $output);
$this->load->library('pdf');
                    $this->pdf->set_base_path($data['path']);
                    $this->pdf->load_view('adm/invoice/si2i',$data);
                    $this->pdf->render();
                    $output = $this->pdf->output();
                    file_put_contents("uploads/invoice/invoice_".$invoice_file_name.".pdf", $output);

请帮帮我。。

提前感谢。。。

我刚刚遇到了同样的问题。解决方案是,代码点火器pdf库$this->load->library('pdf');创建一个每次调用的DOMPDF实例,但是该类在自身之后没有正确清理,因此如果需要生成多个pdf,则会崩溃。

解决方案是根据需要手动实例化DOMPDF类。不要使用codeigniter pdf包装器。

//require at the top of our script
require_once(APPPATH .'libraries/dompdf/dompdf_config.inc.php');
//get the html first (base dompdf cant do the combined load/render)
$view = $this->load->view("viewname", $viewData, true);
//create a new dompdf instance (this is the crucial step)
$this->pdf = new DOMPDF();
//render and output our pdf
$this->pdf->load_html($view);
$this->pdf->render();
$pdf = $this->pdf->output(array("compress" => 0));
file_put_contents("some/file/path.pdf", $pdf );

当我试图在循环中生成pdf时,CodeIgniter3遇到了这个问题。该问题是由于多次加载pdf库而没有清除现有实例。为了避免这种情况,我每次都创建了新的PDF实例。

require_once APPPATH.'third_party/dompdf/autoload.inc.php';
use Dompdf'Dompdf;
class Index extends CI_Controller {
    public function gencert() {
       $nurseids = $this->nurse_model->getNurseIdsForCert();
       foreach($nurseids as $nid){
         //print_r($nid);
         $this->nursecertificate($nid->nurseid);
       } 
    }
    
    private function nursecertificate($nurseid){
       // Load pdf library
       //$this->load->library('pdf');
       $this->pdf = new DOMPDF();
    
       // Load HTML content
       $this->pdf->loadHtml($html, []);
       ...