Для счетов-фактур я создаю файлы pdf и xml отдельно.
Но теперь согласно новому правилу мне нужно отправить pdf doc в файле xml как код (base64Binary [RFC 2045]).
В PHP, я использую функцию SimpleXMLElement ().
Должен ли я использовать закодированный pdf в xml как taxt в теге (вложение)?
Хорошо Хорошо, я это запомню :)






Вы можете получить содержимое документа, преобразовать его в base64 и вставить свой тег XML.
https://secure.php.net/manual/en/function.file-get-contents.php
https://secure.php.net/manual/en/function.base64-encode.php
что-то близкое к этому.
$file = "file.pdf";
$content = file_get_contents($file);
$base64 = base64_encode($content);
$xml = new SimpleXMLElement('<xml/>');
$xml->addChild('file', "$base64");
print $xml->asXML();
Спасибо за ответ, я тоже использую то же решение :)
Конечно, я буду, но, пожалуйста, позвольте мне проверить, есть ли другие ответы.
Я пробую то же самое, но закодированный текст слишком велик и ломает файл xml. Я имею в виду, что XML-файл не создается, а просто показывает простой текст.
Вы можете попробовать что-то подобное
$xmlString = <<<XML
<?xml version='1.0'?>
<document>
<cmd>login</cmd>
<login>Richard</login>
</document>
XML;
$base64Pdf = base64_encode(file_get_contents('/path/to/file.pdf'));
$simpleXml = new SimpleXMLElement($xmlString);
$simpleXml->addChild('document', $base64Pdf);
Код для декодирования PDF.
$simpleXml = new SimpleXMLElement($xmlString);
$encodedPdf = $simpleXml->document;
$decodedPdf = base64_decode($encodedPdf);
file_put_contents("/path/to/decoded.pdf", $decodedPdf);
Спасибо за предложение. :)
elefher, я пробую то же самое, но закодированный текст слишком большой и его ломающий файл xml. Я имею в виду, что XML-файл не создается, а просто показывает простой текст.
Попробуйте поместить закодированный pdf в CDATA. Например, <! [CDATA [encoded_pdf]]> и поместите это как дочерний элемент в свой XML
как использовать CDATA для $ Allegati-> addChild ('Attachment', $ varPdfBase64);
$ varPdfBase64 = "<! [CDATA [". $ varPdfBase64. "]]>";
Пожалуйста, ответьте на мой вопрос здесь: - stackoverflow.com/questions/12499656/…
Я думаю, что голосование "против" вызвано тем, что вы сказали, что много искали по этому поводу, но ничего не нашли. Есть много инструкций о том, как это сделать!