You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

拆分非标尺寸PDF时FPDF GetPageWidth/GetPageHeight返回值异常

问题原因及解决方法

核心原因

你调用GetPageWidth()和GetPageHeight()时,获取的是FPDI实例初始化时的默认页面尺寸,而非源PDF的实际尺寸:

  • 你用new Fpdi("P", "mm")初始化时,默认采用的是A4纸的纵向尺寸(210mm×297mm),和源PDF的300×440mm完全无关。
  • setSourceFile()仅负责加载源PDF的内容,不会自动将FPDI的页面尺寸同步为源PDF的尺寸。

正确获取源PDF页面尺寸的方法

要获取源PDF某一页的实际尺寸,必须先导入对应页面的模板,再通过模板获取尺寸:

$pdf = new Fpdi("P", "mm");
$pageCount = $pdf->setSourceFile($sourcePath);

// 以第1页为例,导入页面模板
$templateId = $pdf->importPage(1);
// 获取该模板的实际尺寸
$size = $pdf->getTemplateSize($templateId);

$pageWidth = $size['width'];
$pageHeight = $size['height'];
  • 若源PDF各页面尺寸不一致,需循环每一页分别获取对应尺寸。
  • 拆分单页PDF时,每创建一页都要根据源页面尺寸重新设置FPDI的页面大小,示例代码如下:
for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
    $templateId = $pdf->importPage($pageNo);
    $size = $pdf->getTemplateSize($templateId);
    
    // 根据源页面尺寸设置新页面
    $pdf->AddPage($size['orientation'], [$size['width'], $size['height']]);
    $pdf->useTemplate($templateId);
    
    // 此处可添加单页PDF的保存逻辑,按需求处理即可
}

内容的提问来源于stack exchange,提问作者f7n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 01:45:35