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

使用FPDF生成合同并集成FPDI插入ToS时遭遇500错误求助

解决FPDF与FPDI结合使用时的500错误问题

嘿,我瞅了下你的代码和遇到的问题,这几个关键小问题导致了服务器500错误,咱们来一步步拆解并修复:

你的代码里的核心问题

  • 重复输出PDF导致头冲突:你同时创建了FPDF和FPDI两个独立的PDF对象,最后还分别调用Output()——服务器没法同时给浏览器返回两个PDF文件,直接就触发错误了。
  • 变量名写错了:代码里写了$pdf->importPage(1),但你根本没定义过$pdf这个变量啊!这里应该用你创建的$tos对象才对。
  • 没必要分开用两个工具:FPDI本身就是继承FPDF的,一个FPDI对象就能搞定合同内容编写+ToS页面导入,完全不用分开实例化。

修正后的完整代码

<?php
require_once('_inc/fpdf.php');
require_once('_inc/fpdi/fpdi.php');

// 只需要实例化FPDI就行,它自带FPDF的所有功能
$pdf = new FPDI();

// 先添加合同内容的页面
$pdf->AddPage();
// 注意:如果whtml是你自己扩展的FPDF方法,要确保这个扩展已经正确实现哦
$pdf->whtml("blahblah");

// 导入ToS文件并添加到合同后面
$tosFilePath = 'ToS.pdf';
// 获取ToS的总页数,支持多页ToS导入
$totalPages = $pdf->setSourceFile($tosFilePath);

// 循环导入每一页ToS
for ($pageNum = 1; $pageNum <= $totalPages; $pageNum++) {
    $pdf->AddPage();
    $templateId = $pdf->importPage($pageNum);
    $pdf->useTemplate($templateId);
}

// 最后只输出一次,把合同+ToS合并成一个完整PDF
$pdf->Output();
?>

修正说明

  1. 统一用FPDI对象:FPDI继承了FPDF的所有方法,所以直接用它来写合同内容、导入ToS页面就行,省得搞两个对象打架。
  2. 修复变量名错误:把原来未定义的$pdf改成了实际的对象变量,避免调用不存在的对象方法。
  3. 合并输出:只调用一次Output(),确保浏览器只收到一个完整的PDF文件,彻底解决头信息冲突的问题。
  4. 支持多页ToS:加了循环逻辑,不管你的ToS是1页还是N页,都能完整导入到合同后面。

内容的提问来源于stack exchange,提问作者S. Lucas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:58:12