2016-08-17 35 views
0

我有任務使用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的值爲 透明度被禁止。該文件不符合 要求的標準。文件格式(標題,預告片,對象,外部參照, 流)已損壞。該文件包含透明度。 文檔包含註釋或表單字段,其中含有或不含 適當的外觀。該文檔的元數據缺失或者不一致或者不完整。完成。

+0

什麼驗證程序認爲它無效,它抱怨什麼? –

回答

0

通常:如果通過FPDI導入的文檔不符合PDF/A標準(例如透明度),則結果將不會被成功驗證。只需通過TCPDF設置一些PDF/A標誌,不會使導入的頁面PDF/A保持一致。

TCPDF僞造簽名外觀,因爲外觀寫入頁面內容流而真實外觀爲空(鑑於「外觀字典不包含條目」)。

應該在TCPDF代碼中添加缺少的屬性(其他「驗證器」不要抱怨它們)。

+0

謝謝你的回覆。 TCPDFs代碼中缺少哪些屬性並應添加? –

+0

嗯......也許驗證也是錯誤的。因爲缺少的字段在那裏(並且第一個視圖不是所有提到的都是必需的)。這些字段是例如記錄在[這裏](http://www.pdfa.org/wp-content/uploads/2011/09/tn0009_xmp_extension_schemas_in_pdfa-1_2008-03-20.pdf)(第9頁及以​​下)。 –

相關問題