注册企业网站需要多少钱,dedecms做网站和thinkphp,浙江省住房和城乡建设厅干部学校网站,唐山建设个网站apache fopApache FOP是由XSL格式化对象#xff08; XSL-FO #xff09;驱动的开源打印处理器。 例如#xff0c;将数据对象转换为PDF可能非常有用。 但是#xff0c;事实证明#xff0c;将其集成到PDE中并最终以OSGi Service的形式启动和运行有点麻烦。 因此#xff0c… apache fop Apache FOP是由XSL格式化对象 XSL-FO 驱动的开源打印处理器。 例如将数据对象转换为PDF可能非常有用。 但是事实证明将其集成到PDE中并最终以OSGi Service的形式启动和运行有点麻烦。 因此我提供了一个P2存储库该存储库在单个功能中包含必要的包。 这样PDE目标设置变得容易得多。 以下各节说明如何使用它。 Apache FOP 如文档所述Apache FOP是一个Java应用程序它读取格式化对象FO树并将结果页面呈现到指定的输出。 当前支持的输出格式包括PDFPSPCLAFPXML区域树表示打印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.htmlapache fop