我正在尝试围绕mikehaertl\php-pdftk\pdf对象创建一个包装类,以填充 PDF 表单字段。当尝试通过文档链接命令时,pdf 无法正确执行第二个命令(或第一个命令之后的任何命令)。看起来这是底层临时文件处理的问题,并且在我查看临时文件夹时没有写出 tmep 文件。当我调试时,临时文件在那里,但大小为 0。
演示问题的示例代码
use mikehaertl\pdftk\Pdf;
class PDFTKTest extends TestCase
{
public function testPdfTkOperations()
{
$cmdPath = 'D:\PDFtk\bin\pdftk.exe';
$formPath = 'D:\test\sample_files\test.pdf';
$options = ['command' => $cmdPath];
$pdf = new Pdf($formPath, $options);
$this->assertNotNull($pdf);
//Get fields from PDF
$fields = $pdf->getDataFields();
$this->assertNotNull($fields);
//Set some field Values
$values = ['full_name' => 'John Q. Programmer'];
$pdf2 = new Pdf($pdf, $options); //chaining broken
//$pdf2 = new Pdf($formPath, $options); //works fine creating a new Pdf object
$this->assertNotNull($pdf2);
$res = $pdf2->fillForm($values)->execute();
//Next assertion fails using chaining
$this->assertTrue($res, "Execute failed: \n". $pdf2->getError());
//Get fields with the updates
$fields = $pdf2->getDataFields();
$this->assertNotNull($fields);
//Next assertion fails, getDataFields fails on a chained command
$this->assertGreaterThan(0, count($fields));
}
}
我有一个解决方法,我为每个操作使用单独的 \Pdf 对象并管理我自己的临时文件,我只是希望能够更多地利用类功能,而不必做那么多平凡的事情。此功能是否损坏,还是我使用不正确?