`
dang1314520ga
  • 浏览: 7189 次
社区版块
存档分类
最新评论

Fop生成pdf(xsl)

阅读更多

  在做项目的时候需要生成PDF,使用了fop技术实现
  1、下载对应的jar包,不是maven工程直接下载


  1.1 maven项目


 
2、下载相关字体和模板文件


 
 2.1设置字体路径


 
 2.2设置模板文件数据源


 

  3、编写Java代码
   

public class FopReport extends BaseService{
	
	private static final String TYPE = ".pdf";

	private static final FopFactory fopFactory = FopFactory.newInstance();
	
	private static final String CONRIGURL = "fop.xml";
	
	
	/**
	 * 转PDF文件
	 * @param xsl 模板文件
	 * @param policy 数据对象
	 * @throws IOException
	 * @throws SAXException
	 */
	private ReportData createReport(File xsl,Object policy,boolean flag) throws IOException, SAXException {
		ReportData reportData = new ReportData();
		String userConfig = Configuration.getValue("pdf.font.path")+"/"+CONRIGURL;
		logger.info("加载字体目录:"+Configuration.getValue("pdf.font.path")+"/"+CONRIGURL);
		fopFactory.setUserConfig(userConfig); //读取自定义配置
		ByteArrayOutputStream output = new ByteArrayOutputStream();
		try {
			Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, output);
			TransformerFactory factory = TransformerFactory.newInstance();
			String templateUrl = Configuration.getValue("pdf.template.path");
			File xslFile = new File(new File(templateUrl),xsl.toString());
			Transformer transformer = factory.newTransformer(new StreamSource(xslFile)); //模板文件
			logger.info("加载模板:"+xslFile.toString());
			String str = "";
			if (!flag) {
				Ojbect2Xml ox = new Ojbect2Xml();
				str = ox.getFullXML(policy, "get");
			} else {
				str = policy.toString();
			}
			ByteArrayInputStream bytearrayinputstream = new ByteArrayInputStream(
					str.getBytes("UTF-8"));
			Charset charset = Charset.forName("UTF-8");
			Reader r = new InputStreamReader(bytearrayinputstream, charset);
			Source src = new StreamSource(r);
			Result res = new SAXResult(fop.getDefaultHandler());
			transformer.transform(src, res);
			reportData.setPdfData(output.toByteArray());
			writePdf(reportData);
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			output.close();
		}
		return reportData;
	}
}

 
   4、生成一个字节流文件,将文件流写出即可,最终效果
   

   
   

 

  • 大小: 6 KB
  • 大小: 5.1 KB
  • 大小: 18.9 KB
  • 大小: 14.9 KB
  • 大小: 96.2 KB
  • 大小: 150 KB
  • fop.rar (5.5 MB)
  • 下载次数: 26
分享到:
评论

相关推荐

    fop生成PDF

    总结起来,"FOP生成PDF"是一个涉及XML、XSL-FO和PDF转换的关键技术,它在Java环境中尤为实用,尤其对于需要生成高质量、多语言PDF报告的业务场景。通过理解和掌握这一技术,开发者可以提升他们的文档生成能力,为...

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

    它可能创建了一些模拟的Java对象,然后调用了`SelfConverter`来生成PDF,以验证转换过程是否正确。 在实际开发中,我们可能还需要处理一些高级功能,如页面布局、字体设置、图像插入等。`fop.xml`可能是一个FOP配置...

    fop转pdf中文字体配置文件

    在IT行业中,生成PDF文档是常见的需求,尤其是在报表生成、文档输出等方面。Apache FOP(Formatting Objects Processor)是一个开源的XSL-FO处理器,能够将XSL-FO格式的文件转换为PDF、rtf等多种格式。然而,在处理...

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

    可以使用FOP的日志功能,或者在生成PDF前先将XSL-FO输出,方便检查和调试。 9. **进阶使用** - 支持图片:FOP支持多种图片格式,如JPEG、PNG等,可以通过`<fo:image>`标签插入。 - 复杂布局:除了基本的文本和...

    Apache Fop1.0 Pdf demp

    通过将XML数据转换成XSL-FO,然后用Fop解析这个FO文件,最终生成PDF。以下是一些关键知识点: 1. **XSL-FO**: XSL-FO是一种XML方言,用于描述文档的外观和布局,如字体、颜色、页面大小、列布局等。它是XSL...

    fop转pdf依赖的jar包

    `serializer-2.7.0.jar`包含了XML序列化相关的类,用于将XML树结构输出为流格式,这在FOP生成PDF的过程中可能需要用到。 `servlet-api.jar`虽然不是直接与FOP转换有关,但可能在Web环境中使用FOP时需要,它包含了...

    XML+XSL/FO生成PDF文件Demo

    4. **使用FOP生成PDF**:最后,FOP插件读取XSL-FO文件,根据其中的格式化指令将其转换成PDF文档。你可以通过编程接口(API)或命令行工具来调用FOP执行这个任务。 在提供的压缩包文件“Fop2Pdf”中,可能包含了XML...

    基于java根据模板动态生成PDF文件

    在IT行业中,生成PDF文件是常见的需求,尤其在后端开发中,用于生成报告、发票、合同等文档。本主题聚焦于使用Java编程语言,结合特定的库或框架,根据预定义的模板来动态生成PDF文件。以下是关于这个主题的详细知识...

    FOP PDF作成手順、例子

    使用FOP生成PDF** 有了XSL-FO文件后,可以通过FOP命令行工具将其转换为PDF: ```bash fop -xml your_file.fo -pdf output.pdf ``` 这将在当前目录下生成一个名为`output.pdf`的PDF文件。 **5. 示例代码** 在实际...

    Fop2PDF_TEAM-AG_4.15_CodingPark.zip

    描述中提到的流程涉及到了XML、XSLT和XSL-FO,这些都是在生成PDF文档时常见的技术组件。 XML(Extensible Markup Language)是一种标记语言,常用于存储和传输结构化数据。它以易于解析的方式定义数据结构,适用于...

    XML转PDF的FOP包和代码

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

    使用java concurrent调用xmlp api生成pdf

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

    java 使用ITextRenderer将html模块生成pdf文件工具类

    ITextRenderer是Apache FOP项目的一部分,它允许我们将XSL-FO(一种XML格式,用于布局和排版)转换为各种输出格式,包括PDF。下面我们将详细探讨如何使用ITextRenderer将HTML转换为PDF,并介绍相关的Java编程知识。 ...

    fop1.1相关资源

    4. **API集成**:FOP还提供了一个Java API,允许开发者在应用程序中直接集成FOP,以便于在处理XML数据时动态生成PDF。 5. **支持的输出格式**:除了PDF,FOP1.1还可以生成PS、PNG、JPEG、TIFF、SVG和AFP等格式的...

    FOP高级技术文档.rar

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

    fop.zip_fop

    4. **Html2Pdf.java**:这是一个Java源代码文件,很可能包含了一个程序,用于将HTML文件转换成XSL-FO文件,然后使用FOP库生成PDF。它可能使用了诸如`Transformer`和`TransformerFactory`等Java的XSLT处理类。 5. **...

    FOP.rar_fop

    通过学习这些资料,开发者不仅可以掌握FOP的基本使用,还能了解到如何在实际项目中,特别是Spring框架环境下,有效地利用FOP生成专业级别的报告和文档。这对于提升企业应用的用户体验和内部文档管理都具有重要意义。

    java URL转PDF文件

    不过,iText不支持直接从HTML生成PDF,所以更常见的是先将HTML转换为PDF的XML格式,如XSL-FO,然后使用iText解析这个XML生成PDF。这通常需要用到Apache FOP库来完成XSL-FO的转换。 最后,我们需要将生成的PDF写入...

    fop-2.4_cn.zip

    这些都是中文排版中不可或缺的基础字体,涵盖了简体中文和繁体中文的主要样式,确保了在生成PDF或其他输出格式时,中文字符可以被正确且美观地呈现。 4. **字体集成**:在使用FOP处理包含中文的XSL-FO文档时,这些...

Global site tag (gtag.js) - Google Analytics