我正在尝试使用FPDM使用我在此处找到的脚本填写我的PDF文档:
http://www.fpdf.org/en/script/script93.php
首先,请记住,我不想在我正在使用的共享主机设置上安装任何其他库。我必须切换主机来执行此操作。
以下是我尝试过的内容:
我的代码:
require('/libs/fpdm/fpdm.php');
$fields = array(
'dealer_name' => 'My name',
'dealer_address' => 'My address',
'dealer_phone' => 'My city',
);
$pdf = new FPDM('/some/pdf/filename.pdf');
$pdf->Load($fields, false);
$pdf->Merge();
$pdf->Output('someoutput.pdf', 'F');
错误
我无法在任何地方找到的错误如下:
<b>FPDF-Merge Error:</b> extract_pdf_definition_value() does not support definition '/Type'
问题
我可以对我的PDF或任何其他方法做些其他事情吗?
答案 0 :(得分:5)
fpdm.php很老了,但可以修复。问题是无法从类FPDM中访问全局变量。
要解决此问题,需要将全局变量作为受保护的属性移动到类中。
第1步
删除以下行:
$FPDM_FILTERS=array(); //holds all supported filters
$FPDM_REGEXPS= array(
"/Type"=>"/\/Type\s+\/(\w+)$/",
"/Subtype" =>"/^\/Subtype\s+\/(\w+)$/"
);
第2步
在&#34;类FPDM {&#34;,第65行:
之后立即放入以下内容protected $FPDM_FILTERS = array(); //holds all supported filters
protected $FPDM_REGEXPS = array(
"/Type"=>"/\/Type\s+\/(\w+)$/",
"/Subtype" =>"/^\/Subtype\s+\/(\w+)$/"
);
第3步
删除global $FPDM_FILTERS;
和global $FPDM_REGEXPS;
的所有实例。
第4步
更新剩余的引用(属性声明除外)。
将$FPDM_FILTERS
更改为$this->FPDM_FILTERS
将$FPDM_REGEXPS
更改为$this->FPDM_REGEXPS
第5步
要正确包含filters/
目录中的过滤器,我们需要将包括移到类中。从文件开头删除require_once()
,然后在构造函数FPDM()
$FPDM_FILTERS = array();
//Major stream filters come from FPDI's stuff but I've added some :)
require_once("filters/FilterASCIIHex.php");
require_once("filters/FilterASCII85.php");
require_once("filters/FilterFlate.php");
require_once("filters/FilterLZW.php");
require_once("filters/FilterStandard.php");
$this->FPDM_FILTERS = $FPDM_FILTERS;