我的任务是使用 TCPDF/FPDI 创建一个 PHP 工具,该工具采用现有的 PDF 并将它们转换为 PDF/A 标准,同时添加证书。
不幸的是,所有生成的 PDF 都不符合 PDF/A 标准。我还尝试生成一个随机测试文档,如此处所示https://tcpdf.org/examples/example_065/但该文档也不符合。
这是我的代码:
public static function convertPdf($path)
{
$pdf = new \FPDI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false, true);
$pagecount = $pdf->setSourceFile(ROOT . $path);
for ($i = 1; $i <= $pagecount; $i++) {
$tpl = $pdf->importPage($i);
$size = $pdf->getTemplateSize($tpl);
$orientation = $size['h'] > $size['w'] ? 'P':'L';
$pdf->AddPage($orientation);
$pdf->useTemplate($tpl, null, null, $size['w'], $size['h'], true);
}
$pdf->SetCreator("Creator");
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('My PDFA example');
$pdf->SetSubject('TCPDF Tutorial');
$certificatePath = 'file://' . ROOT . '/libs/TCPDF-master/examples/data/cert/tcpdf.crt';
// set additional information
$info = array(
'Name' => 'TCPDF',
'Location' => 'Office',
'Reason' => 'Testing TCPDF',
'ContactInfo' => 'http://www.tcpdf.org',
);
$pdf->setSignature($certificatePath, $certificatePath, 'tcpdfdemo', '', 2, $info);
$pdf->addEmptySignatureAppearance(0, 0, 0, 0);
$pdf->Output('example_065.pdf', 'I');
}
我使用这个https://www.pdf-online.com/osa/validate.aspx来验证我的 PDF。它生成以下输出:
合规性 pdfa-1b 结果文件不符合 PDF/A。详细信息 验证文件“testerrrrrr.pdf”的一致性级别 pdfa-1b EOF 标记后有数据。pdfaExtension:schemas/ [0] :: 值类型“Schema”中缺少必填字段“property”。pdfaExtension:schemas/ [0] :: 值类型“Schema”中缺少必填字段“valueType”。pdfaExtension:schemas/ [1] :: 值类型“Schema”中缺少必填字段“valueType”。pdfa扩展:架构/[2] :: 值类型“Schema”中缺少必填字段“valueType”。外观字典不包含条目。键 S 的值 Transparency 是被禁止的。该文件不符合要求的标准。文件格式(标题、预告片、对象、外部参照、流)已损坏。该文件包含透明度。文档包含具有模棱两可或没有适当外观的注释或表单域。文档的元数据丢失、不一致或损坏。完毕。