我在使用CakePHP和DomPDF打印PDF时遇到问题,因为我想在打印pdf之前从数据库中获取一些数据。没有获取数据,它就像一个魅力。我的功能如下:
public function tourpdf($tourid = null){
$contain = ['Deliveries','Deliveries.Articletransactions','Deliveries.Orders','Deliveries.Orders.Customers',
'Deliveries.Articletransactions.Orderarticles','Deliveries.Articletransactions.Orderarticles.Articles'];
$tour = $this->Tours->get($tourid)
->contain($contain);
$this->viewBuilder()
->className('Dompdf.Pdf')
->layout('Dompdf.default')
->options(['config' => [
'filename' => $filename,
'render' => 'browser',
'size' => 'A4',
'orientation' => 'landscape'
]]);
$this->set('Test', 'Hallo');
$this->set('Tour',$tour);
}
一旦我从最后一行设置数据,我上面提取的数据,我收到错误消息“致命错误:无法在... / src / View / PdfView.php中重新声明类Dompdf \ View \ PdfView第66行“。
然而,在最后一行注释时,第一组使用Test正在运行并生成PDF。如何将查询中的数据检索设置为pdf文件?
答案 0 :(得分:1)
我得到了类似的错误,但是使用了Zend Framework 2.突然之间,DOMPDF会出现错误"无法重新声明(之前在...中声明)"。
我在某些模板中使用了PHP函数,当我删除它们时,我收到了另一个错误"找不到块级父级。不好。"。我注意到当我将libxml2从2.9.4升级到2.9.5或更高版本时,这种情况就开始发生了。
解决这两个问题的方法是像这样实例化DOMPDF类:
use Dompdf\Options;
$options = new Options();
$options->set('enable_html5_parser', true);
$dompdf = new Dompdf($options);
使用enable_html5_parser所有问题都消失了。 Here is some more information on this issue
答案 1 :(得分:0)
惊人!
Mac 10.12.6上有此问题 PHP版本5.6.30 libxml版本2.9.4
使用正则表达式删除标记之间的空格可以解决问题。
$html = preg_replace('/>\s+</', '><', $html);