HTML 元素未显示在 Visualforce 页面中,在 Salesforce 中呈现为 PDF

HTML elements not displaying in the Visualforce Page rendered as PDF in Salesforce

在 Salesforce 中: 我在 Visualforce 页面中使用 SVG 标签打印了一个条形码。但是,当使用组件的 'renderAs' 属性将 Visualforce 页面呈现为 pdf 时,条形码不会显示!

<apex:page renderAs="pdf" sidebar="false" showHeader="false" applyBodyTag="false">
    <head>
        <script src="http://cdn.jsdelivr.net/jsbarcode/3.6.0/JsBarcode.all.min.js"></script>
        <script></script>
    </head>
    <body>
     <svg id="barcodesvg" >Hello World!</svg> <!-- style="width:80px; height:25px;" -->
    </body>
    <script>
     JsBarcode("#barcodesvg", "Hey World!");
     console.log(JsBarcode("#barcodesvg", "Hey World!"));
    </script>
</apex:page>

花了一个星期的时间来研究它。任何帮助将不胜感激!

Visualforce 的 PDF 渲染使用(或至少用于)Java 名为 Flying Saucer 的库。 没有这样的浏览器,没有 Java脚本引擎 运行 您的代码。

您必须以不同的方式生成条形码。寻找 Java 能够预渲染您的图像并将其保存为 PNG 附件的脚本库,然后在 VF 中使用它。或者,如果它是一个相对简单的条形码,您可以在 Apex 中进行计算并以纯 html 显示为一系列黑白 <span>s(应该很容易找到 [=22= 的示例实现] 或 .NET 的语法与 Apex 差别不大...甚至可以使用 JavaScript 的源代码作为灵感)。或者也许调用另一个可以生成图像的服务器,也许将您自己的 https://github.com/zxing/zxing 实例放在某个地方(Heroku?)并为图像调用它。

如果你可以在没有真正的 Visualforce renderAs="pdf" 的情况下生活(忘记在电子邮件模板、附件、任何类型的服务器代码中使用它,例如在 SF 中生成文件并上传到某处)那么它可以在Java脚本中。指导用户如何将页面打印为 PDF,或者您可能会遇到 https://github.com/MrRio/jsPDF