如何在PHP的fPDF库中设置自定义页面尺寸并解决异常多页问题?
解决fPDF自定义页面尺寸设置问题
嘿,我来帮你搞定这个自定义页面尺寸的坑!你遇到的生成多页问题,根源其实不是尺寸数组的问题,而是边距设置和单位不匹配导致的——你之前设了SetTopMargin(50),但单位是英寸的话,50英寸远超过你设置的5英寸页面高度,fPDF只能自动分页来容纳,这才生成了多余的页面。
下面是正确的自定义页面尺寸配置方案,我给你拆解清楚:
核心要点说明
fPDF初始化时的第三个参数如果是数组,顺序是**[宽度, 高度]**,必须和第二个参数的单位(这里是in英寸)对应。另外,所有边距、内容尺寸的设置都要遵循同一个单位,别混用像素和英寸!
正确代码示例
<?php require_once('fpdf/fpdf.php'); // 自定义纵向页面:宽度3英寸,高度5英寸 $pdf = new FPDF('P', 'in', [3, 5]); // 设置合理的边距(单位:英寸) $pdf->SetTopMargin(0.5); // 上边距0.5英寸 $pdf->SetLeftMargin(0.3); // 左边距0.3英寸 $pdf->SetRightMargin(0.3); // 右边距0.3英寸 $pdf->SetAutoPageBreak(true, 0.3); // 自动分页的底部边距 $pdf->AddPage(); $pdf->SetFont('Arial', '', 12); // 输出测试内容,Cell的高度用0.2英寸(和单位一致) $pdf->Cell(0, 0.2, '这是3x5英寸的自定义页面', 0, 1); // 如果需要6英寸高度,只需要把尺寸数组改成[3,6]即可 // $pdf = new FPDF('P', 'in', [3, 6]); $pdf->Output(); ?>
关键注意事项
- 如果你需要横向页面,把第一个参数改成
'L',此时fPDF会自动交换宽高的顺序,比如[3,5]横向的话,实际页面是5英寸宽,3英寸高 - 不要在
AddPage()里重复传错误的尺寸参数,否则会覆盖初始化的自定义设置 - 内容输出时(比如
Cell、MultiCell),高度参数也要用英寸单位,避免内容超出页面范围触发自动分页
内容的提问来源于stack exchange,提问作者Muhammad Ilyas
相关产品推荐
相关产品推荐

