我想生成一个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中。
答案 0 :(得分:0)
我花了很多时间解决这个问题。没有成功。我的建议是不要再采用这种方法。
将动态SVG转换为PDF的方法如下。 将SVG保存在硬盘上,并记住对象中的文件名/路径。 然后使用文件名填充外部图形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>
答案 1 :(得分:0)
我花了一些时间来解决这个问题。最终,我可以通过使用<xsl:copy-of>
而不是<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>