`
httpclient_bd
  • 浏览: 74003 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Apache FOP+XML-FO生成PDF文档

阅读更多
package tst.word;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Iterator;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.FormattingResults;
import org.apache.fop.apps.MimeConstants;
import org.apache.fop.apps.PageSequenceResults;
import org.xml.sax.InputSource;
public class PDFWithFOP {
 public static void main(String[] args) throws Exception{
  new PDFWithFOP().run();
  System.out.println("success");
 }
 public void run() throws Exception{
  File fo=new File("D:\\newtst\\helloworld.fo");
  File pdf=new File("D:\\newtst\\helloworld.pdf");
  convertFO2PDF(fo,pdf);
 }
 public void convertFO2PDF(File fo, File pdf) throws Exception {
        //Construct driver
  FopFactory factory=FopFactory.newInstance();
  FOUserAgent userAgent=factory.newFOUserAgent();
  OutputStream out=null;
  out=new FileOutputStream(pdf);
  out=new BufferedOutputStream(out);
  Fop fop=factory.newFop(MimeConstants.MIME_PDF,userAgent,out);
  TransformerFactory transformerFactory=TransformerFactory.newInstance();
  Transformer transformer=transformerFactory.newTransformer();
  Source source=new StreamSource(fo);
  Result res=new SAXResult(fop.getDefaultHandler());
  transformer.transform(source,res);
  out.close();
   }
}


关键在于XML-FO对XML的描述。可通过XSTL转换的方式生成FO,也可通过自己的程序去生成FO。
通过FOP可最终产生PDF、RTF等等各种文档类型。

新博客地址
分享到:
评论
5 楼 yc723705336 2012-03-20  
先将html转xml,再xml转fo,fo转pdf,目前有个问题是body标签下的中文内容能支持,但title标签下的中文内容就变为了#号了,有谁知道怎么解决么?
4 楼 enet_java 2010-09-10  
还是需要通过设置字体来搞,已经搞定。
3 楼 enet_java 2010-09-10  
这个有没有试试呀,我这边用的版本是fop 0.9.5 pdfbox是1.2.1,不能支持呢。
2 楼 httpclient_bd 2010-09-10  
0.94后应该可以自动支持。之前的应该需要配置字体。
1 楼 enet_java 2010-09-10  
哥们,可以支持中文不?

相关推荐

    XML+XSL/FO生成PDF文件Demo

    总之,XML+XSL/FO+FOP技术栈提供了一种强大的方法,将结构化的XML数据转换为专业品质的PDF文档,适合于各种业务场景,如自动化报表生成、电子出版物制作等。熟悉这一流程对于IT从业者,尤其是从事数据处理、文档管理...

    Apache FOP 将Java对象转换为pdf文件

    Apache FOP(Formatting Objects Processor)是Apache软件基金会开发的一个开源项目,主要功能是将XSL-FO(XML标记语言,用于格式化文档)转换成PDF(Portable Document Format)或者其他输出格式,如SVG、PS等。...

    Apache FOP 1.0-bin

    Apache FOP( Formatting Objects Processor)是Apache软件基金会开发的一个开源项目,主要用于将XSL-FO(Extensible Stylesheet Language - Formatting Objects)文档转换为PDF格式。这个“Apache FOP 1.0-bin”...

    Apache Fop1.0 Pdf demp

    Apache Fop是Apache软件基金会开发的一个开源项目,主要用于生成PDF(Portable Document Format)文档。FOP1.0是该项目的一个较早版本,但仍然在许多地方被使用,特别是在那些需要将XML格式的数据转换为PDF的场景中...

    Apache FOP fop-1.1rc1-bin

    Apache FOP( Formatting Objects Processor)是Apache软件基金会开发的一个开源项目,主要功能是将XSL-FO(Extensible Stylesheet Language Formatting Objects)文档转换为高质量的PDF格式。这个fop-1.1rc1-bin...

    fopdf:从头开始使用Apache FOP生成PDF的教程代码

    Apache FOP(Formatting Objects Processor)是一款开源的PDF生成器,主要用Java编写,它遵循W3C的XSL-FO(XSL Formatting Objects)标准,能够将XML格式的数据转换为高质量的PDF文档。本教程将带你从零开始,了解...

    fop生成PDF

    本例关注的是使用Apache FOP(Formatting Objects Processor)将XML数据通过XSL样式表转换为PDF文档,这一过程对于那些需要从结构化数据生成专业外观报告或文档的项目来说至关重要。FOP是一个开源项目,它是基于Java...

    batik-1.5-fop-0.20-5.zip batik-1.5-fop-0.20-5.jar

    FOP是Apache Batik的一部分,它是一个用于处理XSL-FO(XSL-Format Object)的工具,能够将XML格式的数据转换成PDF、PostScript、PNG、JPEG等静态格式。 Apache Batik是一个开源的SVG(Scalable Vector Graphics)...

    Fop生成pdf(xsl)

    标题"Fop生成pdf(xsl)"涉及的技术点是利用Apache FOP( Formatting Objects Processor)这个开源工具将XSL-FO(Extensible Stylesheet Language - Formatting Objects)格式的文档转换成PDF。XSL-FO是一种XML标准,...

    fop1.0及依赖jar包

    Apache FOP(Formatting Objects Processor)是Apache软件基金会开发的一个开源项目,主要用于将XSL-FO(XML样式表语言格式化对象)转换成各种输出格式,如PDF、PS、SVG、XML、HTML等。FOP 1.0是该项目的早期版本,...

    XML转PDF的FOP包和代码

    2. **使用FOP处理XSL-FO**:接下来,使用Apache FOP库读取这个XSL-FO文件,进行解析并生成PDF。你可以通过Java API或者命令行工具来调用FOP。 3. **配置和定制**:FOP允许用户自定义字体、颜色、页面大小等,以满足...

    XML-Project:使用 Apache FOP(XSL、XSL-FO、XSLT)的 RRC XML 最终项目

    3. **使用Apache FOP**:将生成的XSL-FO文件输入到Apache FOP,由其生成最终的PDF输出。这个过程可以是命令行执行,也可以集成到应用程序中,实现动态的PDF生成。 4. **Java编程**:由于标签中提到了"Java",所以...

    Apache-fop

    在实际应用中,Apache FOP常被集成到XML工作流中,与XSLT处理器(如Saxon或Xalan)配合,为企业提供自动化文档生成和格式转换的解决方案。此外,FOP也被广泛应用于报表系统、电子出版、文档管理等领域。 总的来说,...

    fop转pdf中文字体配置文件

    Apache FOP(Formatting Objects Processor)是一个开源的XSL-FO处理器,能够将XSL-FO格式的文件转换为PDF、rtf等多种格式。然而,在处理中文字符时,FOP默认的字体配置可能无法正确显示中文,这时就需要对字体进行...

    FOP高级技术文档.rar

    《FOP高级技术文档》是关于使用XSL-FO(Extensible Stylesheet Language Formatting Objects)语言,通过Apache FOP( Formatting Objects Processor)工具生成PDF文档的详细指南。这份文档深入探讨了如何利用XML...

    fop-2.4_cn.zip

    Apache FOP(Formatting Objects Processor)是一款开源的XSL-FO处理器,主要用于将XSL-FO文档转换成PDF、PS(PostScript)等格式。在这个"**fop-2.4_cn.zip**"压缩包中,它特别针对中文环境进行了优化,包含了6种...

    fop-0.95-src.zip

    Apache FOP (Formatting Objects Processor) is a print formatter driven by XSL formatting objects (XSL-FO) and an output independent formatter. It is a Java application that reads a formatting object ...

    使用java concurrent调用xmlp api生成pdf

    总结起来,使用`java.concurrent`调用XMLP API生成PDF涉及的关键技术包括Java并发编程、XML处理(XSLT和XSL-FO)、以及Apache FOP的使用。理解这些知识点并熟练应用,可以帮助你在开发高并发、高性能的PDF生成系统时...

    FOP PDF作成手順、例子

    Apache FOP(Formatting Objects Processor)是一款开源的XML到PDF转换工具,它遵循XSL-FO(Extensible Stylesheet Language - Formatting Objects)标准,使得我们能够通过XML格式来描述文档布局,进而生成高质量的...

    fop转pdf依赖的jar包

    `FOP ( Formatting Objects Processor)` 是Apache基金会的一个开源项目,专门用于将XSL-FO(XML格式化对象)转换成PDF、PS(PostScript)和其他图形格式。在这个场景中,我们需要使用FOP将数据转换成PDF格式,而这个...

Global site tag (gtag.js) - Google Analytics