Apache FOP研究 - 户起龙的博客 - 51CTO技术博客 apache fop jar

apache FOP研究

fop是apache.org上的一个开源项目,主要是通过xsl-fo将xml数据转换成pdf、ps等文件格式,当然最主要的还是转换成pdf.基于元数据的xml+xsl-fo很容易将文档格式化得很漂亮.

首先让我们下载相关文件以及文档:

在这里:http://xmlgraphics.apache.org/fop/ ,点击左边的download下载你需要的资源包.呵呵.里面有文档、demo、依赖库、甚至ant的编译配置文件一应俱全,想研究源码的下源码包自己编译,在下比较懒,下载的是二进制包,下载完成后解压,将build目录下的fop.jar以及lib下的依赖库文件copy到你新建的工程、然后构建路径......不必多说了吧.重点是如何将xml转成pdf,打开example目录,大概看一边应该就了解了.具体如下:

package embedding;

//Java

import java.io.File;

import java.io.OutputStream;

//JAXP

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.Source;

import javax.xml.transform.Result;

import javax.xml.transform.stream.StreamSource;

import javax.xml.transform.sax.SAXResult;

//FOP

import org.apache.fop.apps.FOUserAgent;

import org.apache.fop.apps.Fop;

import org.apache.fop.apps.FopFactory;

import org.apache.fop.apps.MimeConstants;

/**

* This class demonstrates the conversion of an XML file to PDF using

* JAXP (XSLT) and FOP (XSL-FO).

*/

public class ExampleXML2PDF {

/**

* Main method.

* @param args command-line arguments

*/

public static void main(String[] args) {

try {

System.out.println("FOP ExampleXML2PDFn");

System.out.println("Preparing...");

// Setup directories

File baseDir = new File("E:/workdir/FopExample");

File outDir = new File(baseDir, "out");

outDir.mkdirs();

// Setup input and output files

File xmlfile = new File(baseDir, "xml/xml/10061006.xml");

File xsltfile = new File(baseDir, "xml/xslt/simple.xsl");

File pdffile = new File(outDir, "ResultXML2PDF.pdf");

System.out.println("Input: XML (" + xmlfile + ")");

System.out.println("Stylesheet: " + xsltfile);

System.out.println("Output: PDF (" + pdffile + ")");

System.out.println();

System.out.println("Transforming...");

// configure fopFactory as desired

FopFactory fopFactory = FopFactory.newInstance();

fopFactory.setUserConfig("E:/workdir/FopExample/src/fopconfig.xml");

FOUserAgent foUserAgent = fopFactory.newFOUserAgent();

// configure foUserAgent as desired

// Setup output

OutputStream out = new java.io.FileOutputStream(pdffile);

out = new java.io.BufferedOutputStream(out);

try {

// Construct fop with desired output format

Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);

// Setup XSLT

TransformerFactory factory = TransformerFactory.newInstance();

Transformer transformer = factory.newTransformer(new StreamSource(xsltfile));

// Set the value of a <param> in the stylesheet

// transformer.setParameter("versionParam", "2.0");

// Setup input for XSLT transformation

Source src = new StreamSource(xmlfile);

// Resulting SAX events (the generated FO) must be piped through to FOP

Result res = new SAXResult(fop.getDefaultHandler());

// Start XSLT transformation and FOP processing

transformer.transform(src, res);

} finally {

out.close();

}

System.out.println("Success!");

} catch (Exception e) {

e.printStackTrace(System.err);

System.exit(-1);

}

}

}

当然你需要自己的xml和xsl模板、有关xml和xsl方面的知识笔者将会陆续介绍,敬请关注,附件中是我测试的demo,请指教。

郁闷,太大了,传不上,敬请原谅.不过这东西挺好的感觉.

  

爱华网本文地址 » http://www.aihuau.com/a/25101013/158595.html

更多阅读

李小龙的生与死上 李小龙的生与死国语

前一阵,新片《我的兄弟李小龙》上映,勾起了无数粉丝的怀念。这部片子是根据李小龙的弟弟:回忆录改编而成。真实自然,虽然没有离奇的传说,却多了一份浓浓的亲情。其中的演员选得非常贴切,主角是新人:,唯一的电影只是去年出品的《岁月神偷》。

从蔡珍妮的博文说起 蔡珍妮家庭背景

今天突然想起以前同事推荐的蔡珍妮的博客,随意看了一下“婚姻情感”的版块,里面的第一篇“结婚半年和老公过不下去了怎么办?”,想起前天刚和老公说起转眼间我们结婚也快半年了,就随便看看这个读者问答。虽然我一直觉得和老公日子过的挺好

CaoMeng:从李小龙的白人血统说起

1  CaoMeng  1449  10530发短信 趋加追订 屏蔽2014-11-28 01:45:044073503  从李小龙的白人血统说起  176纪念一名伟大的美国人。 1940年的今天, 李小龙在美国旧金山出生了。早些年,草蜢就听说李小龙的妈妈是个欧亚混血儿。

不能不知的龙的故事 龙的故事

不能不知的龙的故事2014-12-16 13:37儒风大家杂志龙,是一种传说中神奇的动物。《说文解字》:「龙,鳞虫之长,能幽能明,能巨能细,能短能长,春分而登天,秋分而潜渊。」【龙】鳞虫之长。其背有八十一鳞,具九九阳数。其声如戛铜盘,其耳亏聪,故谓之

来自李力加教授的博客 来自星星的你都教授

老魏精彩,瑞江感人摘自:李力加教授的博客这样的课堂真精彩!发表于 2011-11-8 21:54:00相识魏瑞江在10年前首都师范大学的教育部国家“园丁工程”班。那个时候,虽然给魏瑞江等园丁班老师们上课,但还没有真相识。2001年9月,课程标准(实

声明:《Apache FOP研究 - 户起龙的博客 - 51CTO技术博客 apache fop jar》为网友霸气长存分享!如侵犯到您的合法权益请联系我们删除