我正在尝试将带有注释框的页面添加到现有的签名 pdf 中。 TCPDF 和 FPDF 应该可以实现这一点。不幸的是,它删除了该标志,并且 pdf 在更改后无法验证。不过,显示的 pdf 看起来是一样的。
代码(由AI生成)如下:
<?php
use Fpdf\Fpdf;
use setasign\Fpdi\Fpdi;
require_once '../lib/fpdf/Fpdf.php';
require_once '../lib/tcpdf/tcpdf.php';
require_once '../lib/fpdi/src/autoload.php';
// require_once '../vendor/autoload.php';
$pdf = new Fpdi();
$pdf->setSourceFile('test-form-signed.pdf');
// Loop through the pages of the original PDF
$pageCount = $pdf->setSourceFile('test-form-signed.pdf');
for ($i = 1; $i <= $pageCount; $i++) {
$tplId = $pdf->importPage($i);
$pdf->addPage();
$pdf->useTemplate($tplId, 0, 0);
}
// Add a blank new page at the end
$pdf->AddPage();
// Set annotation properties
$pdf->SetFont('Helvetica', '', 12);
$pdf->SetTextColor(0, 0, 0);
$pdf->Text(10, 10, "This is a text annotation on a new blank page.");
// Save the output PDF
$pdf->Output('F', 'test-form-annotated-signed.pdf');
test-form-annotated-signed.pdf 的大小约为原始文件的一半,并且不再通过验证测试。可能在这个过程中签名/证书被删除了。
顺便说一下,pdf 是用丹麦政府颁发的 OCES-3 证书签名的。
请注意,涉及使用 Adobe Acrobat、Signicat 等的解决方案不是一种选择。
您无法使用 FPDI 修改现有 PDF。
使用 FPDI,您可以将现有页面导入到可重用结构(XObjects)中,该结构可以与例如FPDF 或 TCPDF。
生成的 PDF 是一个全新的 PDF,具有完全不同的内部结构。
大多数 PDF 查看器允许您对签名的 PDF 进行注释(通过增量更新),但会记下这些修改。
FWIK:在不使现有签名无效的情况下添加附加页面是不可能的。