【问题标题】:How to add pdf document as code in xml file (PHP)如何将pdf文档添加为xml文件中的代码(PHP)
【发布时间】:2018-12-19 13:40:02
【问题描述】:

我正在分别为发票创建 pdf 和 xml 文件。

但现在根据新规则,我需要将 xml 文件中的 pdf 文档 作为代码(base64Binary [RFC 2045])发送。

在 PHP 中,我使用的是 SimpleXMLElement() 函数。

我应该使用 xml 中编码的 pdf 作为标签(附件)中的税吗?

【问题讨论】:

  • 我认为否决票是因为您说您对此进行了很多搜索,但没有找到。有很多关于如何做到这一点的 tuts!
  • 好的,我会记住的:)

标签: php xml pdf invoice


【解决方案1】:

你可以试试这样的

$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。例如, 并将其作为子项放在您的 XML 中
  • 如何将 CDATA 用于 $Allegati->addChild('Attachment', $varPdfBase64);
  • $varPdfBase64 = "";
【解决方案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();

【讨论】:

  • 感谢您的回答,我也在使用相同的解决方案 :)
  • 当然,我会,但请让我检查更多答案。
  • 我尝试了同样的方法,但编码的文本太大并且它破坏了 xml 文件。我的意思是没有创建 xml 文件,而只是显示简单的文本。
猜你喜欢
  • 2021-08-29
  • 2015-11-23
  • 2014-07-07
  • 2012-07-03
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
相关资源
最近更新 更多