在CodeIgniter中使用DOMpdf生成PDF文件

3

我正在尝试使用dompdf生成PDF文件。

 <?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Dompdf_test extends CI_Controller {

    public function index() {
        // Load all views as normal
        //$this->load->view('phptopdfexample');
        $this->all_movements();
        // Get output html
        $html = $this->output->get_output();

        // Load library
        $this->load->library('dompdf_gen');

        // Convert to PDF
        $this->dompdf->load_html($html);

        $this->dompdf->render();
        $min = 1;
        $max = 1000;
        $name = rand($min, $max);
        $this->dompdf->stream($name . '.pdf');
    }

    public function all_movements() {
        $data['stocks'] = $this->inventory->getdepartmentalmovements();
        $data['meds'] = $this->inventory->get_meds();

        $this->load->view('deptartmental_issue_pdf', $data);
    }

}

当我运行脚本时,出现了内部服务器错误,并显示以下错误信息: 遇到 PHP 错误 严重性:警告 消息:非法字符串偏移量“hex” 文件名:include/style.cls.php 行号:1422 如何解决这个问题?

你以某种方式尝试将字符串用作数组。style.cls.php的第1422行是什么? - Justin
2个回答

4
这个问题在dompdf 0.6中已经得到解决。
或者您可以通过在以下文件中添加条件来进行更正:
dompdf/include/style.cls.php 然后搜索 if ( is_null($col) )(可能是:第1422行或其附近)。
if ( is_null($col) )
$col = self::$_defaults["color"];
//see __set and __get, on all assignments clear cache, not needed on direct set through __set
$this->_prop_cache["color"] = null;
$this->_props["color"] = $col["hex"];
}

还要添加这个条件,然后尝试。

if (is_array($col))
     $this->_props["color"] = $col["hex"];

0

步骤1:从 "https://github.com/dompdf/dompdf/releases" 下载 Dompdf 库。

步骤2:将其粘贴到 libraries 文件夹中,例如 "\xamppp\htdocs\codeigiter\application\libraries"。

Step 3: Also Create one file named like "Pdf.php" in libraries folder and paste below code in it.

require 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;

class Pdf extends Dompdf    
{
public function __construct()
    {
    parent::__construct();      
    $dompdf = new Dompdf(); 
    }
}
?>

Step 4: Create pdf controller and paste below code in this and run controller.

  <?php defined('BASEPATH') OR exit('No direct script access allowed');

class Printbill extends CI_Controller {

public function __construct()
{
parent::__construct();
$this->load->library('pdf');
}

public function index()
{
    $this->load->library('pdf');
    $this->pdf->loadHtml('html code or variable');
    // $customPaper = array(0,0,570,570);
    //$this->pdf->set_paper($customPaper);
    $this->pdf->setPaper('A4','portrait');//landscape
    $this->pdf->render();
    $this->pdf->stream("abc.pdf", array('Attachment'=>0));
    //'Attachment'=>0 for view and 'Attachment'=>1 for download file        
}
}           
?>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接