在做项目的时候需要生成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、生成一个字节流文件,将文件流写出即可,最终效果
相关推荐
总结起来,"FOP生成PDF"是一个涉及XML、XSL-FO和PDF转换的关键技术,它在Java环境中尤为实用,尤其对于需要生成高质量、多语言PDF报告的业务场景。通过理解和掌握这一技术,开发者可以提升他们的文档生成能力,为...
它可能创建了一些模拟的Java对象,然后调用了`SelfConverter`来生成PDF,以验证转换过程是否正确。 在实际开发中,我们可能还需要处理一些高级功能,如页面布局、字体设置、图像插入等。`fop.xml`可能是一个FOP配置...
在IT行业中,生成PDF文档是常见的需求,尤其是在报表生成、文档输出等方面。Apache FOP(Formatting Objects Processor)是一个开源的XSL-FO处理器,能够将XSL-FO格式的文件转换为PDF、rtf等多种格式。然而,在处理...
可以使用FOP的日志功能,或者在生成PDF前先将XSL-FO输出,方便检查和调试。 9. **进阶使用** - 支持图片:FOP支持多种图片格式,如JPEG、PNG等,可以通过`<fo:image>`标签插入。 - 复杂布局:除了基本的文本和...
通过将XML数据转换成XSL-FO,然后用Fop解析这个FO文件,最终生成PDF。以下是一些关键知识点: 1. **XSL-FO**: XSL-FO是一种XML方言,用于描述文档的外观和布局,如字体、颜色、页面大小、列布局等。它是XSL...
`serializer-2.7.0.jar`包含了XML序列化相关的类,用于将XML树结构输出为流格式,这在FOP生成PDF的过程中可能需要用到。 `servlet-api.jar`虽然不是直接与FOP转换有关,但可能在Web环境中使用FOP时需要,它包含了...
4. **使用FOP生成PDF**:最后,FOP插件读取XSL-FO文件,根据其中的格式化指令将其转换成PDF文档。你可以通过编程接口(API)或命令行工具来调用FOP执行这个任务。 在提供的压缩包文件“Fop2Pdf”中,可能包含了XML...
在IT行业中,生成PDF文件是常见的需求,尤其在后端开发中,用于生成报告、发票、合同等文档。本主题聚焦于使用Java编程语言,结合特定的库或框架,根据预定义的模板来动态生成PDF文件。以下是关于这个主题的详细知识...
使用FOP生成PDF** 有了XSL-FO文件后,可以通过FOP命令行工具将其转换为PDF: ```bash fop -xml your_file.fo -pdf output.pdf ``` 这将在当前目录下生成一个名为`output.pdf`的PDF文件。 **5. 示例代码** 在实际...
描述中提到的流程涉及到了XML、XSLT和XSL-FO,这些都是在生成PDF文档时常见的技术组件。 XML(Extensible Markup Language)是一种标记语言,常用于存储和传输结构化数据。它以易于解析的方式定义数据结构,适用于...
2. **使用FOP处理XSL-FO**:接下来,使用Apache FOP库读取这个XSL-FO文件,进行解析并生成PDF。你可以通过Java API或者命令行工具来调用FOP。 3. **配置和定制**:FOP允许用户自定义字体、颜色、页面大小等,以满足...
总结起来,使用`java.concurrent`调用XMLP API生成PDF涉及的关键技术包括Java并发编程、XML处理(XSLT和XSL-FO)、以及Apache FOP的使用。理解这些知识点并熟练应用,可以帮助你在开发高并发、高性能的PDF生成系统时...
ITextRenderer是Apache FOP项目的一部分,它允许我们将XSL-FO(一种XML格式,用于布局和排版)转换为各种输出格式,包括PDF。下面我们将详细探讨如何使用ITextRenderer将HTML转换为PDF,并介绍相关的Java编程知识。 ...
4. **API集成**:FOP还提供了一个Java API,允许开发者在应用程序中直接集成FOP,以便于在处理XML数据时动态生成PDF。 5. **支持的输出格式**:除了PDF,FOP1.1还可以生成PS、PNG、JPEG、TIFF、SVG和AFP等格式的...
《FOP高级技术文档》是关于使用XSL-FO(Extensible Stylesheet Language Formatting Objects)语言,通过Apache FOP( Formatting Objects Processor)工具生成PDF文档的详细指南。这份文档深入探讨了如何利用XML...
4. **Html2Pdf.java**:这是一个Java源代码文件,很可能包含了一个程序,用于将HTML文件转换成XSL-FO文件,然后使用FOP库生成PDF。它可能使用了诸如`Transformer`和`TransformerFactory`等Java的XSLT处理类。 5. **...
通过学习这些资料,开发者不仅可以掌握FOP的基本使用,还能了解到如何在实际项目中,特别是Spring框架环境下,有效地利用FOP生成专业级别的报告和文档。这对于提升企业应用的用户体验和内部文档管理都具有重要意义。
不过,iText不支持直接从HTML生成PDF,所以更常见的是先将HTML转换为PDF的XML格式,如XSL-FO,然后使用iText解析这个XML生成PDF。这通常需要用到Apache FOP库来完成XSL-FO的转换。 最后,我们需要将生成的PDF写入...
这些都是中文排版中不可或缺的基础字体,涵盖了简体中文和繁体中文的主要样式,确保了在生成PDF或其他输出格式时,中文字符可以被正确且美观地呈现。 4. **字体集成**:在使用FOP处理包含中文的XSL-FO文档时,这些...