2016-08-17 16 views
0

TCPDF/FPDIを使用して既存のPDFを取り込み、証明書を追加しながらPDF/A標準に変換するPHPツールを作成する作業があります。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'); 
} 

私は私のPDFを検証するために、このhttps://www.pdf-online.com/osa/validate.aspxを使用しました。

準拠pdfa-1b結果ドキュメントはPDF/Aに準拠していません。詳細 準拠レベルpdfa-1bのファイル "testerrrrrr.pdf"の妥当性確認 は、EOFマーカーの後のデータです。 pdfaExtension:schemas/[0] ::なし 値タイプ 'Schema'に 'property'フィールドが必要です。 pdfaExtension:schemas/ [0] :: 値タイプ 'Schema'に必須フィールド 'valueType'がありません。 pdfaExtension:schemas/[1] ::値のタイプが 'Schema'のフィールド 'valueType'の入力が必要です。 pdfaExtension:schemas/ [2] ::値型 'Schema'に必須フィールド 'valueType'がありません。 出現辞書にはエントリが含まれていません。キーSの値は で禁止されています。この文書は要求された標準 に準拠していません。ファイル形式(ヘッダー、予告編、オブジェクト、外部参照、 ストリーム)が壊れています。文書には透明性があります。 文書には、あいまいな、または の適切な外観のない注釈またはフォームフィールドが含まれています。ドキュメントのメタデータが見つからないか、または一致しないか破損している です。完了しました。

+0

バリデーターは有効ではないと言いますが、何について苦情を言いますか? –

答えて

0

一般的に:FPDIを介してインポートされたドキュメントがPDF/Aに準拠していない場合(例:透過性など)、結果は正常に検証されません。 TCPDFを通していくつかのPDF/Aフラグを設定するだけで、インポートされたPDF/Aのページは作成されません。

TCPDFは、実際の外観が空である間に外観がページコンテンツストリームに書き込まれるため(「外観辞書にはエントリが含まれていない」という意味で)署名の外観を偽造します。

欠落している属性をTCPDFコードに追加する必要があります(他の「バリデーター」はそれらについて不平を言わない)。

+0

ありがとうございます。どの属性が欠けていて、TCPDFコードに追加する必要がありますか? –

+0

Mmmhh ...検証が間違っている可能性もあります。不足しているフィールドが存在するため(最初のビューでは、すべてが記載されているわけではありません)。フィールドは、 [こちら](http://www.pdfa.org/wp-content/uploads/2011/09/tn0009_xmp_extension_schemas_in_pdfa-1_2008-03-20.pdf)(9ページ目以降)に記載されています。 –

関連する問題