使用 PHP 和 fpdf 和 tcpdf 添加注释到签名的 pdf 中删除签名

问题描述 投票:0回答:1

我正在尝试将带有注释框的页面添加到现有的签名 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 等的解决方案不是一种选择。

php pdf digital-signature fpdf tcpdf
1个回答
0
投票

您无法使用 FPDI 修改现有 PDF。

使用 FPDI,您可以将现有页面导入到可重用结构(XObjects)中,该结构可以与例如FPDF 或 TCPDF。

生成的 PDF 是一个全新的 PDF,具有完全不同的内部结构。

大多数 PDF 查看器允许您对签名的 PDF 进行注释(通过增量更新),但会记下这些修改。

FWIK:在不使现有签名无效的情况下添加附加页面是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.