当我使用 dompdf 创建 pdf 时,它会生成默认宽度和高度。我想设置我创建的 pdf 的自定义宽度和高度。如果在 dompdf 中不可能,请建议其他 php 插件。
默认情况下,它将呈现在“美国信件”上,您可以使用以下方法更改此设置:
$dompdf->setPaper(DEFAULT_PDF_PAPER_SIZE, 'portrait');
您可以使用“letter”、“legal”、“A4”等..
尽管如此,您可以像这样设置自己的尺寸:
$customPaper = array(0,0,360,360);
$dompdf->setPaper($customPaper);
我正在寻找如何使文档的高度动态化以在热敏纸卷上打印。这是我使用 DomPDF 得到的最接近的解决方案。
您需要创建包含所有属性的文件并加载 html:
$pdf = new Dompdf();
$options = $pdf->getOptions();
$pdf->set_paper(array(0, 0, 164.44, 842.07), 'portrait');
$options->set(array(
'isRemoteEnabled' => true,
'isHtml5ParserEnabled' => true
));
$pdf->setOptions($options);
$pdf->loadHtml($template);
在渲染之前,定义一个回调函数,并在全局数组中定义一个存储高度的变量,之后,进行渲染并取消设置 pdf 对象,现在您的文件的主体高度加上 100 px .
/*
* Workaround to get the body height
*/
$GLOBALS['bodyHeight'] = 0;
$pdf->setCallbacks([
'myCallbacks' => [
'event' => 'end_frame',
'f' => function ($frame) {
$node = $frame->get_node();
if (strtolower($node->nodeName) === "body") {
$padding_box = $frame->get_padding_box();
$GLOBALS['bodyHeight'] += $padding_box['h'];
}
}
]
]);
$pdf->render();
unset($pdf);
$docHeight = $GLOBALS['bodyHeight'] + 100;
现在您需要再次创建文件,但现在您已经拥有了需要为 pdf 文件定义的高度。
$pdf = new Dompdf();
$options = $pdf->getOptions();
$pdf->setPaper([0,0,227, $docHeight]);