apache Fop 2.1 支持中文

    xiaoxiao2021-12-10  10

    apache Fop 2.1 支持中文

    Apache Fop可以把xsl-fo格式、xml、xslt转换pdf文件。其中关键点就是熟悉xsl-fo语法和xslt

    在使用的过程,遇到了fop中文转换的问题,通过查找资料,和官方例子解决了

    apache fop 2.1 mavne 仓库地址

    <dependency> <groupId>org.apache.xmlgraphics</groupId> <artifactId>fop</artifactId> <version>2.1</version> </dependency>

    建议从官网下载fop,里面包含了xsl-fo的语法和例子,下面就是官网的下载

    http://mirrors.hust.edu.cn/apache/xmlgraphics/fop/binaries/fop-2.1-bin.zip

    官方例子

    import org.apache.fop.apps.FopFactory; import org.apache.fop.apps.Fop; import org.apache.fop.apps.MimeConstants;

    public static void convertFO2PDF()throws IOException, SAXException, ConfigurationException{

    //读取字体配置文件,配置中文

    FopFactory fopFactory =Fop Factory.newInstance(new File("C:/Temp/bar.conf.xml"));

    //输出pdf文件路径 OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(“C:/Temp/myfile.pdf”)));

    try { // Step 3: Construct fop with desired output format Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);

    // Step 4: Setup JAXP using identity transformer TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(); // identity transformer // Step 5: Setup input and output for XSLT transformation // Setup input stream Source src = new StreamSource(new File("C:/Temp/myfile.fo")); // Resulting SAX events (the generated FO) must be piped through to FOP Result res = new SAXResult(fop.getDefaultHandler()); // Step 6: Start XSLT transformation and FOP processing transformer.transform(src, res);

    } finally { //Clean-up out.close(); }

    网上下载中文字体,通过fop自带的工具类,生成xml文件,fop好像只支持ttf格式的字体,可以生成fop识别的字体文件

    代码如下

    String[] parameters = { “-ttcname”, “NotoSansCJK-Black”, “xxx.ttf”, xxx.xml文件} TTFReader.main(parameters);

    配置bar.conf.xml文件的内容

    方正宋三简体.xml文件是我用工具生成xml 然后可以在fop中调用Barcode字体,

    文件我都是用的绝对路径,官网可以用相对路径,可是我没试成功 ,希望看到这篇文章的大神,可以帮我解决下这个问题 ,其中我用的Freemarker+FOP 生成自定义pdf的内容

    xsl-fo详细教程:https://www.antennahouse.com/XSLsample/FOsample.htm

    最后的结果

    转载请注明原文地址: https://ju.6miu.com/read-700130.html

    最新回复(0)