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

将FPDF类构造函数改为_construct后出现‘unknown page size A4’错误的技术咨询

解决FPDF构造函数过时提示与页面尺寸错误的问题

哦,我一眼就发现问题所在了!你修改构造函数的时候少写了一个下划线——PHP的魔术构造函数是__construct()(两个下划线开头),而不是你写的_construct()(单个下划线)!这就是为什么会出现“unknown page size A4”错误的核心原因。

问题根源

当你把构造函数写成_construct时,PHP根本不把它当作类的构造函数,而是会自动调用默认的空构造函数。这样一来,FPDF类初始化时完全没有接收到orientation、unit、size这些参数,自然无法识别A4页面尺寸的预设值,就抛出错误了。而之前用与类同名的FPDF()构造函数时,虽然能正常工作,但PHP已经将这种写法标记为过时,所以会弹出提示。

正确的解决步骤

  1. 修正构造函数名称
    把构造函数改成PHP标准的魔术构造函数格式,重点是两个下划线:

    class FPDF {
        public function __construct($orientation='P', $unit='mm', $size='A4'){
            // 把原来FPDF()构造函数里的所有初始化代码都移到这里
            // 比如初始化页面方向、单位、尺寸,以及加载预设页面尺寸的逻辑
            $this->orientation = $orientation;
            $this->unit = $unit;
            $this->size = $size;
            // 示例:处理预设页面尺寸(比如定义A4的宽高)
            $this->_initPageDimensions();
        }
    }
    

    这里建议加上public访问修饰符,符合现代PHP的编码规范。

  2. 兼容旧代码(可选)
    如果你的项目里还有旧代码使用new FPDF()的方式调用同名构造函数,可以保留原来的构造函数,让它调用新的__construct,同时加上过时注释:

    class FPDF {
        public function __construct($orientation='P', $unit='mm', $size='A4'){
            // 初始化逻辑...
        }
    
        /**
         * @deprecated 请使用__construct()替代
         */
        public function FPDF($orientation='P', $unit='mm', $size='A4'){
            $this->__construct($orientation, $unit, $size);
        }
    }
    

    这样既消除了PHP的过时提示,又不会破坏旧代码的功能。

  3. 升级FPDF(推荐)
    如果你使用的是第三方FPDF库,建议直接升级到最新版本。新版本的FPDF已经完全适配PHP的现代构造函数规范,不会再出现这种过时提示,同时还能获得更多功能和Bug修复。

验证效果

修改完成后重新生成PDF:

  • 不会再出现“与类同名的方法已过时”的提示
  • 页面尺寸A4能被正确识别,不会弹出“unknown page size A4”错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:17:31