私はpdf出力を生成するためにfopを使用していますが、それは初めてです。長時間の作業の後、私は 1 つの問題に直面
しました。
私のxslファイルがあります:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="root">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="my-page">
<fo:region-body margin="1in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="my-page">
<fo:flow flow-name="xsl-region-body">
<!-- LOGO
<fo:block>
</fo:block>
-->
<!-- TEXT -->
<fo:block text-align="justify">
<xsl:value-of select="text" />
</fo:block>
<!-- TABLES -->
<xsl:for-each select="./table">
<fo:block>
<fo:block font-weight="bold"> <!-- Add some adjustment -->
<xsl:value-of select="@name" />
</fo:block>
<table> <!-- Add some border -->
<fo:table-body> <!-- Add some adjustment -->
<fo:table-row>
<xsl:for-each select="./header/cell">
<fo:table-cell>
<fo:block font-weight="bold"> <!-- Add some adjustment and extra border -->
<xsl:value-of select="." />
</fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
<xsl:for-each select="./row">
<fo:table-row>
<xsl:for-each select="./cell">
<fo:table-cell>
<fo:block> <!-- Add some adjustment -->
<xsl:value-of select="." />
</fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</table>
</fo:block>
</xsl:for-each>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>
そして、そこにあるJava部分の印刷ファイルがトリガーされます
private void convertToPDF(File xsl, File pdf) throws IOException,
FOPException, TransformerException {
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
OutputStream out = new BufferedOutputStream(new FileOutputStream(pdf));
try {
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent,
out);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(
xsl));
Source src = prepareSource();
Result res = new SAXResult(fop.getDefaultHandler());
// Start XSLT transformation and FOP processing
transformer.transform(src, res);
} finally {
out.close();
}
}
このメソッドに指定されたパラメーター xsl は、私のプロジェクト リソースから選択されたファイルであり、これが適切なファイルであると確信しています (出力されます)。
私の xml ソースは Java で動的に生成されます。これらのファイルが必要な場合は、この投稿を編集してそこに配置します。
xsl ファイルを編集して単純化しようとしましたが、何も機能しませんでした。
コンパイルには、Spring Tool Suite 拡張機能を備えた Eclipse を使用しています。
助けてくれませんか?
また、私のPDF出力に画像を配置する方法を教えてもらえますか?