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.foporg.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的集成相关推荐

  1. Apache FOP与Eclipse和OSGi的集成

    Apache FOP是由XSL格式化对象( XSL-FO )驱动的开源打印处理器. 例如,将数据对象转换为PDF可能非常有用. 但是,将其集成到PDE中并最终以OSGi Service的形式运行并最终 ...

  2. Eclipse搭建OSGi Equinox最小运行平台

    1.Eclipse版本 Version: Neon Release (4.6.0) Build id: 20160613-1800 2.Equinox版本 org.eclipse.osgi_3.11. ...

  3. idea/eclipse下Maven工程集成web服务(tomcat、jetty)

     idea/eclipse下Maven工程集成web服务 转载请注明出处:http://www.cnblogs.com/funnyzpc/p/8093554.html 应用服务器最常用的一般有这哥仨: ...

  4. ECLIPSE配置OSGI服务器

    eclipse版本如下: Eclipse Java EE IDE for Web Developers. Version: Mars Release (4.5.0) Build id: 2015062 ...

  5. 性能监控工具yourkit的安装及eclipse、tomcat的集成

    yourkit使用手册 1.下载yourkit及注册机 2.安装yourkit 3.打开keygen.bat 点击Patch 选择刚安装yourkit下lib文件夹中yjp.jar 框中显示succe ...

  6. eclipse的python_eclipse中集成python开发环境

    转载:https://www.cnblogs.com/mywood/p/7272487.html Eclipse简介 Eclipse是java开发最常用的IDE,功能强大,可以在MAC和Windos上 ...

  7. Gradle下载安装与和eclipse(STS)集成

    前言 简单的说,Gradle是一个构建工具,在java中功能大体上使用同maven一样,就是使用方式不同...吧啦吧啦... 1 Gradle下载 点击下载各个版本的Gradle 一般下载all版本, ...

  8. AMPP (Apache、MySQL、PHP、Perl)集成开发

    XAMPP 简介 XAMPP 是一个功能全面的 AMPP (Apache.MySQL.PHP.Perl)软件包,这是 Linux 平台上可以使用的几种非商业 AMPP 中间件之一.采用这种紧密的集成, ...

  9. Eclipse Marketplace( 插件市场 )集成插件方案

    Eclipse Marketplace( 插件市场 ) 可以自行集成 各式各样 的插件 提高开发效率 下面 我们直入正题, = 以 CodeMix 插件 开发 Vue.js 为例 安装插件 在Ecli ...

最新文章

  1. 软件框架设计的艺术----读书总结
  2. 面向对象中类和类的关系
  3. shell脚本中的命令替换
  4. 详解k8s deployment的滚动更新
  5. 检索数据_16_按照某个模式搜索
  6. Hadoop学习之MapReduce
  7. 更司马懿学管理计算机,跟司马懿学管理(一)无悔的选择是好选择
  8. 《论道HTML5》内容技术分享活动
  9. C# 两个datatable中的数据快速比较返回交集或差集
  10. 拓端tecdat|R语言逻辑回归(Logistic Regression)、回归决策树、随机森林信用卡违约分析信贷数据集
  11. PDF文件怎么转换成Excel表格?学会这个方法轻松转换。
  12. 关系图谱在风控体系的应用与实践
  13. 直角四面体面积公式推导
  14. opencv最大内接矩形笔记
  15. 抓包常用工具使用简介
  16. CCF-CSP-2015年9月-题解
  17. html分列代码,实现分列的两段excel vba 分列代码
  18. NPP++去除文本中的重复行
  19. 智能网 联汽车信息安全发展趋势
  20. 计算机专业答辩提纲,计算机专业论文答辩自述稿及问题参考

热门文章

  1. [2020.11.25NOIP模拟赛]下棋【dp】
  2. P5025-[SNOI2017]炸弹【tarjan,线段树优化建图】
  3. P2114-[NOI2014]起床困难综合症【位运算】
  4. ssl提高组周六模拟赛【2018.9.23】
  5. ssl2331OJ1373-鱼塘钓鱼 之2【贪心堆优化】
  6. Codeforces Round #674 (Div. 3)
  7. 【结论】单元格(jzoj 1509)
  8. 9、mysql数据表中数据的查询(1)
  9. 关于Spring底层原理面试的那些问题,你是不是真的懂Spring?
  10. java并发编程之4——Java锁分解锁分段技术