3

我想生成一个 svg 图表并使用 apache fop 将其插入到 pdf 中。到目前为止,我已经尝试使用

<fo:instream-foreign-object xmlns:svg="http://www.w3.org/2000/svg">
    <xsl:value-of select="svgData"/>
</fo:instream-foreign-object>

在 xsl 文件中,生成的 svg 作为字符串保存在“svgData”中。这种方法不起作用,因为它没有解析字符串 svg 数据并只是附加它。

我该如何做到这一点?我需要在 java 中创建 svg(baitk?)并将其添加到 pdf 中。

4

2 回答 2

0

我花了很多时间解决这个问题。没有成功。我的建议是不要进一步采用这种方法。

我将动态 SVG 转换为 PDF 的解决方案如下。将 SVG 保存在硬盘上并记住对象中的文件名/路径。然后使用文件名填充 external-graphic src 属性。创建 PDF 后,必须删除 svg 文件。

完毕。

XSL:

<xsl:template match="qandapair">
   <fo:block text-align="center">
       <fo:external-graphic src="{chart}"/>
   </fo:block>
</xsl:template>

XML:

     <qandapair>
         <chart>gaoejTLVfcBUrCgjvmsWgjBwQzHYmYYJ.svg</chart>
     ...
     </qandapair>
于 2018-10-16T14:02:28.310 回答
0

我也花了一些时间在这个问题上头疼。<xsl:copy-of>最后,我可以通过使用 a而不是<xsl:value-of>+ 使用前缀命名空间来使其工作。

<fo:block>
  <fo:instream-foreign-object content-type="content-type:xml/svg"
                              xmlns:svg="http://www.w3.org/2000/svg">
    <xsl:copy-of select="/path/to/svg:svg"/>
  </fo:instream-foreign-object>
</fo:block>
于 2019-07-12T07:55:03.800 回答