Как добавить PDF-документ как код в XML-файл (PHP)

Для счетов-фактур я создаю файлы pdf и xml отдельно.

Но теперь согласно новому правилу мне нужно отправить pdf doc в файле xml как код (base64Binary [RFC 2045]).

В PHP, я использую функцию SimpleXMLElement ().

Должен ли я использовать закодированный pdf в xml как taxt в теге (вложение)?

Я думаю, что голосование "против" вызвано тем, что вы сказали, что много искали по этому поводу, но ничего не нашли. Есть много инструкций о том, как это сделать!

Eleftherios 19.12.2018 15:47

Хорошо Хорошо, я это запомню :)

Deepak Dholiyan 20.12.2018 09:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
1 903
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете получить содержимое документа, преобразовать его в 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();

Спасибо за ответ, я тоже использую то же решение :)

Deepak Dholiyan 19.12.2018 14:51

Конечно, я буду, но, пожалуйста, позвольте мне проверить, есть ли другие ответы.

Deepak Dholiyan 19.12.2018 14:53

Я пробую то же самое, но закодированный текст слишком велик и ломает файл xml. Я имею в виду, что XML-файл не создается, а просто показывает простой текст.

Deepak Dholiyan 21.12.2018 10:12
Ответ принят как подходящий

Вы можете попробовать что-то подобное

$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);

Спасибо за предложение. :)

Deepak Dholiyan 19.12.2018 15:29

elefher, я пробую то же самое, но закодированный текст слишком большой и его ломающий файл xml. Я имею в виду, что XML-файл не создается, а просто показывает простой текст.

Deepak Dholiyan 21.12.2018 11:01

Попробуйте поместить закодированный pdf в CDATA. Например, <! [CDATA [encoded_pdf]]> и поместите это как дочерний элемент в свой XML

Eleftherios 21.12.2018 11:43

как использовать CDATA для $ Allegati-> addChild ('Attachment', $ varPdfBase64);

Deepak Dholiyan 21.12.2018 12:04

$ varPdfBase64 = "<! [CDATA [". $ varPdfBase64. "]]>";

Eleftherios 21.12.2018 12:13

Пожалуйста, ответьте на мой вопрос здесь: - stackoverflow.com/questions/12499656/…

Deepak Dholiyan 21.12.2018 14:00

Другие вопросы по теме