我在从 mPDF 库输出的 pdf 上的附加 XML 文件上得到了 0.00 字节的文件大小,并且该文档与 PDF/A-3 不符

问题描述 投票:0回答:1

我使用 mPDF 库生成 PDF/A-3 文件,一切正常,除了

  1. 我从该库输出的 pdf 文件表明文件仅符合 PDF/A-1B。
  2. 我的 pdf 文档输出中的 XML 附件显示为 0.00Bytes,尽管我可以打开附件并查看详细信息。

如何解决这个问题?这是我的一些代码。

enter image description here

enter image description here

$defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults();
$fontDirs = $defaultConfig['fontDir'];

$defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults();
$fontData = $defaultFontConfig['fontdata'];

$mpdf = new \Mpdf\Mpdf([
  'format' => [210, 297]
  , 'mirrorMargins' => 1
  , 'mode' => 'utf-8'
    , 'PDFA' => true
  , 'PDFAauto' => false
  , 'PDFAversion'=> 'A-3'
  , 'fontDir' => array_merge($fontDirs, [
    $_SERVER['DOCUMENT_ROOT'] . '/font',
  ])
  , 'fontdata' => $fontData + [ // lowercase letters only in font key
    'sarabun' => [
        'R' => 'THSarabunNew.ttf'
        , 'B' => 'THSarabunNew Bold.ttf'
    ]
  ]
  , 'default_font' => 'sarabun'
  , 'debug' => true
]);


$mpdf->SetAssociatedFiles([[
    'name' => $invoiceNumber . '.xml'
  , 'mime' => 'text/xml'
  , 'description' => 'Tax Invoice XML Data'
  , 'AFRelationship' => 'Alternative'
  , 'content' => $xml
]]);

$mpdf->SetAdditionalXmpRdf($rdf);

$mpdf->SetTitle($invoiceNumber);
$mpdf->SetAuthor($masterCompany['companyName']);
$mpdf->SetCreator($masterCompany['companyName']);
$mpdf->SetSubject('Receipt/Tax Invoice');
$mpdf->SetKeywords('Tax Invoice');
$mpdf->WriteHTML($html);
$mpdf->Output($invoiceNumber . '.pdf', 'I');

我在互联网上找不到太多如何从 mPDF 输出 PDF/A-3 文档的详细示例。这是我从该网站获得的内容https://mpdf.github.io/what-else-can-i-do/pdf-a3-xmp-rdf.html

php mpdf pdfa pdfa3
1个回答
0
投票

附加时报告的 0 字节大小对于此 XML 格式来说是完全正常的,因为它不是 PDF。磁盘大小 = 12.0 KB(12,288 字节)。如果以大约 2 KB 的 zip 内容发送,则比较大小,甚至在 docX 中也会变得臃肿。

这是 2.2 德国规范中的示例之一。

对于如此简单的应用程序归档方法来说,PDF/A-3 的严格要求是完全没有必要的,但它就是这样,由委员会设计的!

要通过 PDF/A 级别,PDF 需要

  • 以 XMP 格式正确复制元数据
  • 在颜色配置文件中正确复制颜色值
  • 以臃肿的 PDF 和臃肿的 XML 格式正确复制内容

全部包含在复杂的 PDF 格式中。

构建这样一个庞然大物的通用方法是使用 GhostScript 作为将组件正确升级为 PDF/A-3 结构并具有完全正确的颜色配置文件的方法。

© www.soinside.com 2019 - 2024. All rights reserved.