Я пытаюсь создать файл PDF/A-3b, который содержит встроенный XML-файл для соответствия ZUGFeRD. Для этой цели я использую Perl и PDFLib. Документация PDFLib существует только для Java и PHP. Создание PDF прекрасно работает, но часть XML - моя проблема.Как создать виртуальный XML для счетов-фактур ZUGFeRD
Так как я могу создать pvf из xml и присоединиться к этому в мой pdf?
Это то, что PDFLib рекомендует в Java:
// Place XML stream in a virtual PVF file
String pvf_name = "/pvf/ZUGFeRD-invoice.xml";
byte[] xml_bytes = xml_string.getBytes("UTF-8");
p.create_pvf(pvf_name, xml_bytes, "");
// Create file attachment (asset) from PVF file
int xml_asset = p.load_asset("Attachment", pvf_name,
"mimetype=text/xml description={ZUGFeRD invoice in XML format} "
+ "relationship=Alternative documentattachment=true");
// Associate file attachment with the document
p.end_document("associatedfiles={" + xml_asset + "}");
Так я думал, брать пример и вписать его в PERL:
my $xmldata = read_file($xmlfile, binmode => ':utf8'); #I use example xml at the moment
my $pvf_xml = "/pvf/ZUGFeRD-invoice.xml";
PDF_create_pvf($pdf, $pvf_xml, $xmldata, ""); #because no OOP i need to call it this way (works with all other PDF Functions)
my $xml_invoice = PDF_load_asset("Attachment", $pvf_xml, "mimetype=text/xml "
."description={Rechnungsdaten im Zugferd-Xml-Format} "
."relationship=Alternative documentattachment=true");
PDF_end_document($pdf, "associatedfiles={".$xml_invoice."}");
В примерах PHP это также не нужны, чтобы преобразовать в ByteArray после чтения xml. Дальше попробовал его с распаковкой, но, похоже, это не проблема.
Если я вызываю мой сценарий, я просто получаю:
Использование: load_asset (тип, имя файла, optlist); на signatur_test.pl линии 41.
Я думаю, что проблема в том, что pvf_xml не создал линию раньше. Кто-то сделал это раньше, и нет, как это решить?