TCPDF/FPDI を使用して既存の PDF を取得し、証明書を追加しながら PDF/A 標準に変換する PHP ツールを作成するタスクがあります。
残念ながら、生成されたすべての 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] :: 値型「スキーマ」に必須フィールド「プロパティ」がありません。pdfaExtension:schemas/ [0] :: 値タイプ「スキーマ」に必須フィールド「valueType」がありません。pdfaExtension:schemas/ [1] :: 値タイプ「スキーマ」に必須フィールド「valueType」がありません。pdfaExtension:schemas/[2] :: 値型「スキーマ」に必須フィールド「valueType」がありません。外観ディクショナリにエントリがありません。キー S の値は禁止されています。ドキュメントは要求された標準に準拠していません。ファイル形式 (ヘッダー、トレーラー、オブジェクト、外部参照、ストリーム) が壊れています。ドキュメントに透明部分が含まれています。ドキュメントには、あいまいな、または適切な外観のない注釈またはフォーム フィールドが含まれています。ドキュメントのメタ データが見つからないか、一貫性がないか、破損しています。終わり。