开发者社区 问答 正文

Birt导出pdf时一个很棘手的问题(求救):报错

系统中使用birt作为报表的开发工具,在使用birt的过程中遇到几个问题,

1. 在windows系统中导出pdf格式的文件,文件显示正常,但是将应用发布到 linux系统中,导出的pdf文件居然除了静态的标题能正常的显示,动态的绑定属性值居然不能正常显示(体现在空白值)

尝试更改的方法:

    原先一直怀疑是由于在我们的 linux服务器中没有安装相关的字体文件造成的,于是根据这个思路,安装了pdf所设定的字体【宋体】,并且在org.eclipse.birt.runtime_3.7.0.v20110615-1818.jar中fontsConfig.xml中指定所使用的字体。

结果:安装了字体之后,没有任何的效果,

求解: 希望有过相关birt开发的朋友提供一些关于pdf中文字体的配置 思路,最好是能给出这个问题的checkpoint点。

        谢谢:

2.    由于org.eclipse.birt.runtime_3.7.0.v20110615-1818.jar这个jar包是一个有着数字签名的jar包,所有在本地进行 解压---修改---压缩之后,居然就无法进行再次的运行,

具体异常。【security 类型的异常】。。。。。

但是我将修改后的org.eclipse.birt.runtime_3.7.0.v20110615-1818.jar发布到 linux中的weblogic上面,居然没有任何的异常信息出现,很无解。。。。

求解:
    1. 是不是本地中classloader和weblogic的类加载机制有所不同的原因造成

    2. 有没有一种机制能绕过这个签名机制。让本地环境能正常的启动。

展开
收起
kun坤 2020-06-06 00:28:01 1566 分享 版权
阿里云 AI 助理回答

针对您提出的问题,我将分别提供一些可能的解决方案和思路:

1. BIRT在Linux系统中PDF导出中文显示问题

问题分析: - 确保安装的字体不仅存在于系统中,还需确认BIRT能够正确识别并使用这些字体。字体路径配置是否正确是关键。 - 字体版权和格式兼容性也可能影响显示,确保使用的宋体字体与Linux环境兼容,并且没有版权保护限制。

解决思路: - 检查字体路径:确保fontsConfig.xml中的字体路径正确无误,对于Linux系统,路径可能是绝对路径,需要以Linux的文件路径格式指定。 - 字体兼容性:尝试使用开源的、广泛支持的中文字体,如WenQuanYi Micro Hei(文泉驿微米黑),它通常在Linux环境下表现良好,无需额外授权。 - 权限问题:确认Web服务器用户(如Tomcat或WebLogic运行用户)对字体文件有读取权限。 - 日志分析:查看BIRT和Web服务器的日志,可能会有更具体的错误信息提示字体加载失败的原因。

2. 修改签名jar包后本地无法运行的问题

问题分析: - Java的安全管理器会验证已签名jar包的完整性,任何修改都会导致校验失败,从而抛出安全异常。 - WebLogic可能有其特定的类加载策略,允许运行未通过完整校验的jar包,这解释了为什么在WebLogic上部署没有异常。

解决思路: - 绕过签名机制:理论上不建议直接绕过签名机制,因为这涉及到安全性问题。但若出于开发调试目的,可以在启动Java应用时添加参数来禁用部分安全检查:

java -Djava.security.policy=your_policy_file -jar your_application.jar

其中,your_policy_file是一个自定义的安全策略文件,可以放宽或关闭某些安全限制。但这仅限于测试环境,生产环境中不推荐此做法。

  • 重新签名jar包:最安全的做法是修改后重新为jar包签名。可以使用jarsigner工具,具体步骤包括:

    1. 解压jar包,进行必要的修改。
    2. 删除原MANIFEST.MF中的Signature相关信息。
    3. 使用自己的证书重新签名jar包。

    这样既保留了安全性,又实现了功能修改。

综上所述,对于BIRT的PDF中文显示问题,重点在于字体配置和权限检查;而对于签名jar包的修改问题,则建议遵循安全最佳实践,必要时通过正确的途径重新签名。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答