系统中使用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. 有没有一种机制能绕过这个签名机制。让本地环境能正常的启动。
这个问题困扰了公司里面很多比较资深的人,尝试过很多方案,都是失败告终,
希望有类是经验的朋友们献策。
如果问题描述的不是很清晰的话,可以通过我的QQ【1103205613】进行探讨。
期待您的分享。。。。。
将windows下的字体复制一份到linux下面就可以了
引用来自“保罗的寓言”的答案
这个问题困扰了公司里面很多比较资深的人,尝试过很多方案,都是失败告终,
希望有类是经验的朋友们献策。
如果问题描述的不是很清晰的话,可以通过我的QQ【1103205613】进行探讨。
期待您的分享。。。。。
不晓得你这个问题最后怎么解决的呢?
我也遇到你同样的问题。导出PDF后,字体样式改变,一些没有相应字体的用户电脑打开该PDF文件时,提示需要下载字体包。
开发环境:Birt3.7.0,Windows。
在Eclipse Birt环境中,通过修改plugins\org.eclipse.birt.report.engine.fonts_3.7.0.v20110602\fontsConfig_pdf.xml
<Code>
<font>
<font-aliases>
<mapping name="serif" font-family="SimSun" />
<mapping name="sans-serif" font-family="SimSun" />
<mapping name="monospace" font-family="SimSun" />
</font-aliases>
<font-encodings>
<encoding font-family="SimSun" encoding="utf-8" />
<encoding font-family="Times-Roman" encoding="Cp1252" />
<encoding font-family="Helvetica" encoding="Cp1252" />
<encoding font-family="Courier" encoding="Cp1252" />
<encoding font-family="Zapfdingbats" encoding="Cp1252" />
<encoding font-family="Symbol" encoding="Cp1252" />
<encoding font-family="STSong-Light" encoding="UniGB-UCS2-H" />
<encoding font-family="STSongStd-Light" encoding="UniGB-UCS2-H" />
<encoding font-family="MHei-Medium" encoding="UniCNS-UCS2-H" />
<encoding font-family="MSung-Light" encoding="UniCNS-UCS2-H" />
<encoding font-family="MSungStd-Light" encoding="UniCNS-UCS2-H" />
<encoding font-family="HeiseiMin-W3" encoding="UniJIS-UCS2-H" />
<encoding font-family="HeiseiKakuGo-W5" encoding="UniJIS-UCS2-H" />
<encoding font-family="KozMinPro-Regular" encoding="UniJIS-UCS2-H" />
<encoding font-family="HYGoThic-Medium" encoding="UniKS-UCS2-H" />
<encoding font-family="HYSMyeongJo-Medium" encoding="UniKS-UCS2-H" />
<encoding font-family="HYSMyeongJoStd" encoding="UniKS-UCS2-H" />
</font-encodings>
<composite-font name="all-fonts">
<font font-family="Times-Roman" catalog="Western" />
<font font-family="SimSun" catalog="Chinese" />
<font font-family="HeiseiKakuGo-W5" catalog="Japanese" />
<font font-family="HYGoThic-Medium" catalog="Korean" />
</composite-font>
</font>
</Code>
在Birt中导出PDF,其字体都转化为宋体。其他用户也可以正常访问。但是无法部署到birt3.7.0环境中。因为只有在org.eclipse.birt.runtime_3.7.0.v20110615-1818.jar修改。把fontsConfig_pdf.xml添加进去后,导出PDF后打开不了。
我的问题是:怎么去修改org.eclipse.birt.runtime_3.7.0.v20110615-1818.jar这个文件才有效呢?
引用来自“小黑哥L”的答案
引用来自“保罗的寓言”的答案
这个问题困扰了公司里面很多比较资深的人,尝试过很多方案,都是失败告终,
希望有类是经验的朋友们献策。
如果问题描述的不是很清晰的话,可以通过我的QQ【1103205613】进行探讨。
期待您的分享。。。。。
不晓得你这个问题最后怎么解决的呢?
我也遇到你同样的问题。导出PDF后,字体样式改变,一些没有相应字体的用户电脑打开该PDF文件时,提示需要下载字体包。
开发环境:Birt3.7.0,Windows。
在Eclipse Birt环境中,通过修改plugins\org.eclipse.birt.report.engine.fonts_3.7.0.v20110602\fontsConfig_pdf.xml
<Code>
<font>
<font-aliases>
<mapping name="serif" font-family="SimSun" />
<mapping name="sans-serif" font-family="SimSun" />
<mapping name="monospace" font-family="SimSun" />
</font-aliases>
<font-encodings>
<encoding font-family="SimSun" encoding="utf-8" />
<encoding font-family="Times-Roman" encoding="Cp1252" />
<encoding font-family="Helvetica" encoding="Cp1252" />
<encoding font-family="Courier" encoding="Cp1252" />
<encoding font-family="Zapfdingbats" encoding="Cp1252" />
<encoding font-family="Symbol" encoding="Cp1252" />
<encoding font-family="STSong-Light" encoding="UniGB-UCS2-H" />
<encoding font-family="STSongStd-Light" encoding="UniGB-UCS2-H" />
<encoding font-family="MHei-Medium" encoding="UniCNS-UCS2-H" />
<encoding font-family="MSung-Light" encoding="UniCNS-UCS2-H" />
<encoding font-family="MSungStd-Light" encoding="UniCNS-UCS2-H" />
<encoding font-family="HeiseiMin-W3" encoding="UniJIS-UCS2-H" />
<encoding font-family="HeiseiKakuGo-W5" encoding="UniJIS-UCS2-H" />
<encoding font-family="KozMinPro-Regular" encoding="UniJIS-UCS2-H" />
<encoding font-family="HYGoThic-Medium" encoding="UniKS-UCS2-H" />
<encoding font-family="HYSMyeongJo-Medium" encoding="UniKS-UCS2-H" />
<encoding font-family="HYSMyeongJoStd" encoding="UniKS-UCS2-H" />
</font-encodings>
<composite-font name="all-fonts">
<font font-family="Times-Roman" catalog="Western" />
<font font-family="SimSun" catalog="Chinese" />
<font font-family="HeiseiKakuGo-W5" catalog="Japanese" />
<font font-family="HYGoThic-Medium" catalog="Korean" />
</composite-font>
</font>
</Code>
在Birt中导出PDF,其字体都转化为宋体。其他用户也可以正常访问。但是无法部署到birt3.7.0环境中。因为只有在org.eclipse.birt.runtime_3.7.0.v20110615-1818.jar修改。把fontsConfig_pdf.xml添加进去后,导出PDF后打开不了。
我的问题是:怎么去修改org.eclipse.birt.runtime_3.7.0.v20110615-1818.jar这个文件才有效呢?
我的邮箱是:alexxr.liu@sodexo.com
保罗兄如果能给点建议,将不胜感激!谢谢了先!
1. 由于birt中的org.eclipse.birt.runtime_3.7.0.v20110615-1818.jar 是进过数字指纹的,一般修改了fontsConfig_pdf.xml都会有问题的,可以在外部引入的方式进行指定birt的报表的字体设置,如果没有很特别的中文的话,是不需要的处理字体的,因为birt pdf中使用的字体中基本上包含sumlight 字体的。即使没有的话,也会自动提示下载字体的。
2. 针对我题的问题的背景是,birt报表项目进行过运行环境的迁移,具体是有tomcat环境迁移到weblogic下面,造成导出pdf空白的主要原因
a. 字体的缺失,
b. birt 中依赖的EMCASCript 相关的包和weblogic中的依赖包中存在版本差异,造成weblogic在启动的时候加载自身的包之后,不在加载项目中的有冲突的包,
解决: 将birt中的包,加入到启动启动脚本中,
引用来自“保罗的寓言”的答案
1. 由于birt中的org.eclipse.birt.runtime_3.7.0.v20110615-1818.jar 是进过数字指纹的,一般修改了fontsConfig_pdf.xml都会有问题的,可以在外部引入的方式进行指定birt的报表的字体设置,如果没有很特别的中文的话,是不需要的处理字体的,因为birt pdf中使用的字体中基本上包含sumlight 字体的。即使没有的话,也会自动提示下载字体的。
2. 针对我题的问题的背景是,birt报表项目进行过运行环境的迁移,具体是有tomcat环境迁移到weblogic下面,造成导出pdf空白的主要原因
a. 字体的缺失,
b. birt 中依赖的EMCASCript 相关的包和weblogic中的依赖包中存在版本差异,造成weblogic在启动的时候加载自身的包之后,不在加载项目中的有冲突的包,
解决: 将birt中的包,加入到启动启动脚本中,
非常感谢保罗兄的详细答复!
由于导出来的报表是需要发给许多不同的客户查看,有些客户没有安装相应的字体会提示下载AdobePDF的字体包,这给用户带来很大的不便。
可行的方法是在设计报表的时候,指定所有中文为宋体。但目前有上百个已存在的报表,修改测试均非常耗时,且以后开发也得时刻小心同样的问题。所以想找个一劳永逸的法子。
你提示的“在外部引入的方式进行指定birt的报表的字体设置”,这个具体些是怎样的办法呢?
用FineReport来导出相对没有那么多问题: