在Java servlet中嵌入Apache fop 2.1
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Java servlet中嵌入Apache fop 2.1,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1661字,纯文字阅读大概需要3分钟。
内容图文
![在Java servlet中嵌入Apache fop 2.1](/upload/InfoBanner/zyjiaocheng/774/a32c00bd33814316ac0b5bfe548458ce.jpg)
我有一个使用Apache FOP生成PDF文件的应用程序.一切都很好,除了生成的PDF中的西里尔字母.据我所知,我应该将带有西里尔字母的字体与应用程序捆绑在一起.
所以,我将应用程序设置如下:
我有../src/main/resources/conf/fop.xml中的配置文件(几乎默认为PDF渲染器)并初始化FOP如下:
FopFactoryBuilder fopBuilder =
new FopFactoryBuilder(fileLoader.getFile("conf/fop.xml").toURI(),
new ClasspathResolverURIAdapter());
fopFactory = fopBuilder.build();
fileLoader是我自己的用于读取文件的实用程序,XSLT由它加载,一切都很好.我尝试了另一种方法,没有运气. Fop本身效果很好,除了字体.
在配置中我有:
<renderers>
<renderer mime="application/pdf">
<filterList>
<value>flate</value>
</filterList>
<fonts>
<directory recursive="true">./</directory>
<auto-detect/>
</fonts>
</renderer>
</renderers>
字体位于conf /下的子目录中.
我的XSLT引用了字体,并且通过命令行一切正常,我得到了我想要的结果,所以我猜,XSLT是正确的.
我看到两个问题:
>当我更改配置时,我没有看到来自fop运行时的任何反应,即使我将其打破.
>当然,字体不会被加载.
可能我错过了一些非常明显的东西,并希望有人可以指导我.
解决方法:
目前您没有使用配置文件,因此未配置字体并且它们未嵌入PDF输出中.
FopFactoryBuilder构造函数中的URI参数用于解析相对URI,而不是加载配置文件.
根据embedding instructions,您的代码应该具有类似于此的内容:
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
...
DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
Configuration cfg = cfgBuilder.buildFromFile(new File("conf/conf.xml"));
FopFactoryBuilder fopFactoryBuilder = new FopFactoryBuilder(new File(".").toURI()).setConfiguration(cfg);
FopFactory fopFactory = fopFactoryBuilder.build();
内容总结
以上是互联网集市为您收集整理的在Java servlet中嵌入Apache fop 2.1全部内容,希望文章能够帮你解决在Java servlet中嵌入Apache fop 2.1所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。