apache fop_Apache FOP与Eclipse和OSGi的集成
apache fop
Apache FOP是由XSL格式化对象( XSL-FO )驱动的开源打印处理器。 例如,将数据对象转换为PDF可能非常有用。 但是,事实证明,将其集成到PDE中并最终以OSGi Service的形式启动和运行有点麻烦。
因此,我提供了一个P2存储库,该存储库在单个功能中包含必要的包。 这样,PDE目标设置变得容易得多。 以下各节说明如何使用它。
Apache FOP
如文档所述,Apache FOP是一个Java应用程序,它读取格式化对象(FO)树并将结果页面呈现到指定的输出。 当前支持的输出格式包括PDF,PS,PCL,AFP,XML(区域树表示),打印,AWT和PNG,在较小程度上包括RTF和TXT。 主要输出目标是PDF'。
当然,可以将处理器嵌入Java程序中。 基于JAXP的 Apache FOP依赖于SAX事件来接收XSL-FO输入文档。 基本用法摘要如下所示:
InputStream in = ... // the fo tree to processOutputStream out = ... // pdf destinationFopFactory fopFactory = FopFactory.newInstance();try {Fop fop = fopFactory.newFop( MimeConstants.MIME_PDF, out );TransformerFactory factory = TransformerFactory.newInstance();Transformer transformer = factory.newTransformer();Source source = new StreamSource( in );Result result = new SAXResult( fop.getDefaultHandler() );transformer.transform( source, result );} finally {out.flush();}
有关Apache FOP嵌入式用法的详细说明,请参考在线文档 。
依赖地狱
尽管该代码片段看起来很简单,但是将其集成到Eclipse / OSGi中并不是那么容易。 也许我表现得很愚蠢,但是我花了将近两天的时间来汇编目标定义,最终达到了目的。
为了避免将来出现此问题,并使其他可能陷入同一陷阱的人有一个更好的起点,我创建了开头提到的P2存储库。 为了使用它,只需将存储库位置作为软件站点添加到Eclipse目标定义中:
现在定义应该包含处理器的捆绑软件的依赖关系。 这些依赖性是org.apache.servicemix.bundles.fop
和org.apache.servicemix.bundles.xmlgraphics-commons
:
一旦这些到位,上面的代码就会编译。 如下所示,很容易开发一种具有用于生成带有签名的PDF format
方法的服务类:
public class FopService {private final FopFactory fopFactory;public FopService() {this.fopFactory = FopFactory.newInstance();}public void format(InputStream input, OutputStream output, InputStream stylesheet ){[...] // similar transformation code like above}
}
我编织了一个简单的用法示例项目,其中提供了更多详细信息。 该项目包含一个已经集成Apache FOP的example.target 。 导入项目后,在Eclipse工作区中解析并设置其目标定义 。 运行“ FOP示例”启动配置。 最后但并非最不重要的一点是,打开浏览器并转到URL http://localhost:10080/services/pdf
。
新创建的PDF应该可以下载了:
用于生成PDF的xml和xsl文档与嵌入式Apache FOP示例的ExampleXML2PDF类所处理的文档相同。 PDF包含虚拟开发团队成员的简单列表。
请注意,“ Apache FOP当前可能不是完全线程安全的”(请参阅
Apache FOP:嵌入 )。 自然,现实世界中的场景必须考虑到这一点,尤其是在多线程服务器环境中运行时。
结语
尽管开始时道路有些坎bump,但现在Apache FOP集成可以正常工作。 因此,如果您想自己检查示例,它位于https://github.com/fappel/FOP
P2存储库托管在http://fappel.github.io/FOP/
如果您遇到问题或有任何疑问或建议,可以在GitHub项目中添加问题,或在下面的部分中留下评论。
翻译自: https://www.javacodegeeks.com/2015/01/apache-fop-integration-with-eclipse-and-osgi.html
apache fop
apache fop_Apache FOP与Eclipse和OSGi的集成相关推荐
- Apache FOP与Eclipse和OSGi的集成
Apache FOP是由XSL格式化对象( XSL-FO )驱动的开源打印处理器. 例如,将数据对象转换为PDF可能非常有用. 但是,将其集成到PDE中并最终以OSGi Service的形式运行并最终 ...
- Eclipse搭建OSGi Equinox最小运行平台
1.Eclipse版本 Version: Neon Release (4.6.0) Build id: 20160613-1800 2.Equinox版本 org.eclipse.osgi_3.11. ...
- idea/eclipse下Maven工程集成web服务(tomcat、jetty)
idea/eclipse下Maven工程集成web服务 转载请注明出处:http://www.cnblogs.com/funnyzpc/p/8093554.html 应用服务器最常用的一般有这哥仨: ...
- ECLIPSE配置OSGI服务器
eclipse版本如下: Eclipse Java EE IDE for Web Developers. Version: Mars Release (4.5.0) Build id: 2015062 ...
- 性能监控工具yourkit的安装及eclipse、tomcat的集成
yourkit使用手册 1.下载yourkit及注册机 2.安装yourkit 3.打开keygen.bat 点击Patch 选择刚安装yourkit下lib文件夹中yjp.jar 框中显示succe ...
- eclipse的python_eclipse中集成python开发环境
转载:https://www.cnblogs.com/mywood/p/7272487.html Eclipse简介 Eclipse是java开发最常用的IDE,功能强大,可以在MAC和Windos上 ...
- Gradle下载安装与和eclipse(STS)集成
前言 简单的说,Gradle是一个构建工具,在java中功能大体上使用同maven一样,就是使用方式不同...吧啦吧啦... 1 Gradle下载 点击下载各个版本的Gradle 一般下载all版本, ...
- AMPP (Apache、MySQL、PHP、Perl)集成开发
XAMPP 简介 XAMPP 是一个功能全面的 AMPP (Apache.MySQL.PHP.Perl)软件包,这是 Linux 平台上可以使用的几种非商业 AMPP 中间件之一.采用这种紧密的集成, ...
- Eclipse Marketplace( 插件市场 )集成插件方案
Eclipse Marketplace( 插件市场 ) 可以自行集成 各式各样 的插件 提高开发效率 下面 我们直入正题, = 以 CodeMix 插件 开发 Vue.js 为例 安装插件 在Ecli ...
最新文章
- 软件框架设计的艺术----读书总结
- 面向对象中类和类的关系
- shell脚本中的命令替换
- 详解k8s deployment的滚动更新
- 检索数据_16_按照某个模式搜索
- Hadoop学习之MapReduce
- 更司马懿学管理计算机,跟司马懿学管理(一)无悔的选择是好选择
- 《论道HTML5》内容技术分享活动
- C# 两个datatable中的数据快速比较返回交集或差集
- 拓端tecdat|R语言逻辑回归(Logistic Regression)、回归决策树、随机森林信用卡违约分析信贷数据集
- PDF文件怎么转换成Excel表格?学会这个方法轻松转换。
- 关系图谱在风控体系的应用与实践
- 直角四面体面积公式推导
- opencv最大内接矩形笔记
- 抓包常用工具使用简介
- CCF-CSP-2015年9月-题解
- html分列代码,实现分列的两段excel vba 分列代码
- NPP++去除文本中的重复行
- 智能网 联汽车信息安全发展趋势
- 计算机专业答辩提纲,计算机专业论文答辩自述稿及问题参考
热门文章
- [2020.11.25NOIP模拟赛]下棋【dp】
- P5025-[SNOI2017]炸弹【tarjan,线段树优化建图】
- P2114-[NOI2014]起床困难综合症【位运算】
- ssl提高组周六模拟赛【2018.9.23】
- ssl2331OJ1373-鱼塘钓鱼 之2【贪心堆优化】
- Codeforces Round #674 (Div. 3)
- 【结论】单元格(jzoj 1509)
- 9、mysql数据表中数据的查询(1)
- 关于Spring底层原理面试的那些问题,你是不是真的懂Spring?
- java并发编程之4——Java锁分解锁分段技术