一注:請注意,富媒體的PDF爲PDF 1.7(可擴展),因此只使用Adobe Reader工作9+(不推薦10,因爲它在這一個bug功能從未修復過)。
第一個答案是使用RenderX,因爲我爲RenderX工作,這很容易。這是一個模板XSL,可用於插入所謂的RichMedia註釋。
你可能有這樣的文件,一些XML:
<chart swf="SWF\Anychart.swf" flashvar="XMLData" width="300" height="300">
<anychart>....</anychart> <!-- put the XML for the chart here -->
<resources>
<resource src="img\a.png"/>
</resources>
</chart>
你可以從這些得到撥打以下的模板。
的這裏的參數是:
chartxml:自我解釋
Flash變量:的Flash變量命令到XML傳遞給SWF驅動圖表
寬度和高度的XML文件。對於AnyChart的,這是「XMLDATA」爲FusionCharts的,這是「dataXML」
@swf:在這個模板,這是路徑的實際SWF文件(如 「SWF'Anychart.swf」或「SWF \ Bar2D.swf 「
資源:通過圖表所需的任何其他外部資源或映射或什麼(如圖片)
<xsl:template name="add-on.richmedia">
<xsl:param name="chartxml"/>
<xsl:param name="width"/>
<xsl:param name="height"/>
<xsl:param name="flashvar"/>
<fo:block>
<rx:rich-media-object scaling="non-uniform" name="test" width="{concat($width,'pt')}" height="{concat($height,'pt')}" content-width="scale-to-fit" content-height="scale-to-fit" transparency="true">
<xsl:attribute name="src">
<xsl:value-of select="@swf"/>
</xsl:attribute>
<rx:flash-var name="{$flashvar}" content="true">
<xsl:apply-templates select="$chartxml" mode="copy-of"/>
</rx:flash-var>
<xsl:for-each select="resources/resource">
<rx:rich-media-resource>
<xsl:attribute name="src">
<xsl:text>url('</xsl:text>
<xsl:value-of select="@src"/>
<xsl:text>')</xsl:text>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="@src"/>
</xsl:attribute>
</rx:rich-media-resource>
</xsl:for-each>
</rx:rich-media-object>
</fo:block>
</xsl:template>
這將插入塊與一個RX您的FO文件:富媒體對象RenderX處理鏈接PDF內相關資產(圖表XML和任何資源)的所有內部結果,其中包含一個交互式Flash圖表當格式化爲PDF格式時。還有其他方法可以做到這一點。你甚至可以插入閃光燈,並使用「XMLfile」(用於Anychart)或「dataurl」作爲FUsioncharts,並將數據的URL(如http://mychartserver.com/getdata)或任何其他內容填入PDF中,並在每次打開時向PDF提供動態數據。
對於iText,在他們的網站上有完美的樣品,而不是在這裏發佈更多。看看這個鏈接,它顯示了在Java中所有的代碼插入SWF和數據集需要:
http://itextpdf.com/examples/iia.php?id=300
有可能與兩者的iText和RenderX,這是兩個工具,我用得最多。您可以嵌入任何交互式Flash內容。我使用Anychart,但Fusionchart也可以。我可以在一段時間後爲你發佈代碼。必須挖掘出來。 –