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

保罗的寓言 发布于 2012/04/24 20:04
阅读 4K+
收藏 2

系统中使用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. 有没有一种机制能绕过这个签名机制。让本地环境能正常的启动。

加载中
0
保罗的寓言
保罗的寓言

这个问题困扰了公司里面很多比较资深的人,尝试过很多方案,都是失败告终,

希望有类是经验的朋友们献策。

如果问题描述的不是很清晰的话,可以通过我的QQ【1103205613】进行探讨

期待您的分享。。。。。

0
俊少
俊少

将windows下的字体复制一份到linux下面就可以了

 

保罗的寓言
保罗的寓言
补充两问题, 1.在fontsConfig.xml中期中的alias 与mapping ,encoding,composite它们之间是如何区别的, 2. 在*.rpt文件中定义的font-famliy的属性名称是如何和系统的字体进行匹配的?在配置文件中是如何体现的, 求解。。。。。。 期待中。。。。
保罗的寓言
保罗的寓言
谢谢你的回复,这种方案,尝试过,但是没有效果,
0
LoveJava
LoveJava
你把那几个签名的xml中的类删掉。不过可能会引起无法访问本地文件。或者你重新签名一下。
保罗的寓言
保罗的寓言
谢谢,我尝试过将META-INF中的文件跟清除掉,但是我有个问题,对于jar进行签名的话,是否需要遵循jar签名的机制,还是单独的重新进行签名就可? 同时还有个问题,为什么在weblogic中进行发布的时候,就不会出现这种问题?
0
小黑哥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这个文件才有效呢?

0
小黑哥L

引用来自“小黑哥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

保罗兄如果能给点建议,将不胜感激!谢谢了先!

0
保罗的寓言
保罗的寓言

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中的包,加入到启动启动脚本中,



0
小黑哥L

引用来自“保罗的寓言”的答案

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的报表的字体设置”,这个具体些是怎样的办法呢?


0
tim1888
tim1888
给相应的label、text等设置为宋体试试
0
尽江南
换成FineReport应该很好解决
0
九月你好123
九月你好123

用FineReport来导出相对没有那么多问题:

1. 导出格式
PDF:导出PDF格式文件;
Excel:导出Excel格式文件,又分为分页导出、原样导出、分页分Sheet导出,详细请查看Excel多种导出方式文档;
Word:导出Word格式文件,不支持导出悬浮元素,详细请查看Word导出
Image:导出为图片,又分为JPG、PNG、GIF和BMP四种格式。
注:将报表输出为Word不支持导出悬浮元素和多Sheet下的不同页面设置;excel不支持Html中部分标签,单元格背景只支持纯色,另外在导出为图片时,不建议使用GIF格式,可以采用PNG替代,原因是导出GIF需要的内存比较大。
另:聚合报表和表单不支持导出。
2. 步骤
预览模板,点击工具栏中的输出,即可以对模板进行多种格式的导出,如下图所示:
注:若模板有参数,需要查询出数据后才能够点击输出进行导出。
3. 示例
下面我们以GettingStarted.cpt导出成PDF样式为例说明导出方法。
3.1 打开模板
打开模板:%FR_HOME%\WebReport\WEB-INF\reportlets\GettingStarted.cpt
3.2 分页预览
点击分页预览,选择完参数后,点击查询。
3.3 导出
点击工具栏上的输出按钮,然后选择PDF格式,会弹出如下图所示的对话框:
点击保存,选择保存路径即可将数据导出成PDF格式。

返回顶部
顶部