如何处理fop字体缓存文件夹,这是抛出异常

时间:2017-01-27 06:21:43

标签: maven pdf xslt aem apache-fop

对于AEM中的PDF生成,我使用的是apache fop API + XSL的组合:fo + OOTB AEM变换器

问题是我遇到了这个错误

  

java.lang.UnsupportedOperationException:
  类org.apache.fop.fonts.FontCache

不允许反序列化

因为生成的PDF没有打开并且给出了500。

我通过删除与.m2并行创建的“.fop文件夹(包含fop-fonts.cache文档)本地解决了这个问题。一旦我删除了这个文件夹并完成了maven构建,我就能够正确地查看PDF了而且例外没有再来。

但是这个问题也出现在QA和其他服务器上,而且间歇地出现在我的本地。那么有人可以建议什么可能是它的永久解决方案或上述错误的任何帮助输入?

1 个答案:

答案 0 :(得分:1)

当引用的字体无法加载时,需要删除AFAIK,.fop目录。当发生这种情况时,FOP被迫重新解析所有字体,因为它在整个环境中有点间歇性(根据你的问题),我会假设缺少一些引用的字体。

您可以尝试以下方法之一:

  • 安装字体作为环境构建的一部分(最不喜欢的选项)。
  • 修复字体引用,以防您使用通配符(如。*)绑定到现有的常用字体。 (可能会破坏样式,但主要是兼容)
  • 嵌入字体。 (增加文件大小)
  • 替换字体。 (同样,这可能会降低样式)

我建议您根据PDF分发范围从上面选择合适的选项。

希望这会有所帮助。