我有任务使用TCPDF/FPDI创建一个PHP工具,该工具在添加证书的同时将现有的PDF转换为PDF/A标准。TCPDF生成的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'。 pdfaExtension:schemas/ [2] ::值类型'Schema'中缺少必需字段'valueType'。 外观字典不包含条目。密钥S的值为 透明度被禁止。该文件不符合 要求的标准。文件格式(标题,预告片,对象,外部参照, 流)已损坏。该文件包含透明度。 文档包含注释或表单字段,其中含有或不含 适当的外观。该文档的元数据缺失或者不一致或者不完整。完成。
什么验证程序认为它无效,它抱怨什么? –