(本文来自
http://www.yuendong.com.cn/info.asp?id=157)
在使用Opentaps(OFBiz)中,发现所有生成的PDF文件中,所有中文都不能显示,以”#“表示。自己在网上查了一些资料,主要参考http://leomne.iteye.com/blog/684421和http://www.vtimes.net/blog/article/add-chinese-font-for-fop-summary.html这篇文章,自己总结一下。
在ofbiz中,下面以一个例子来说明生成pdf的过程是:
1、访问https://localhost:8443/warehouse/control/shipGroups.pdf?orderId=DEMO_B2C_UK02&shipGroupSeqId=00001
2、再到warehouse 模块controller.xml找到对应的screen为,就是要显示的地方。在controller.xml的上部有如下配置:
说明这个渲染的时候会利用ScreenFopViewHandler。
3、在ScreenFopViewHandler.java中,先把reportTemplate.fo.ftl渲染成xml
// render and obtain the XSL-FO
Writer writer = new StringWriter();
FopFactory fopFactory = ApacheFopFactory.instance();
ScreenRenderer screens = new ScreenRenderer(writer, null, htmlScreenRenderer);
screens.populateContextForRequest(request, response, servletContext);
// this is the object used to render forms from their definitions
screens.getContext().put("formStringRenderer", new FoFormRenderer(request, response));
screens.render(page);
然后由apache的FOP(Formatting Objects Processor)对xml渲染,生成pdf文件,并放回到response中输出:
ByteArrayOutputStream out = new ByteArrayOutputStream();
TransformerFactory transFactory = TransformerFactory.newInstance();
try {
Fop fop = fopFactory.newFop(contentType, out);
Transformer transformer = transFactory.newTransformer();
// set the input source (XSL-FO) and generate the output stream of contentType
Reader reader = new StringReader(writer.toString());
Source src = new StreamSource(reader);
// Get handler that is used in the generation process
Result res = new SAXResult(fop.getDefaultHandler());
// Transform the FOP XML source
transformer.transform(src, res);
// We don't want to cache the images that get loaded by the FOP engine
fopFactory.getImageFactory().clearCaches();
// set the content type and length
response.setContentType(contentType);
response.setContentLength(out.size());
// write to the browser
out.writeTo(response.getOutputStream());
response.getOutputStream().flush();
由于Apache FOP中不支持任务中文字体,所以我们要把支持中文字体手动加入进来,下面分三步进行使pdf中的中文正常显示:
1、 用FOP生成黑体字体配置文件simhei.xml。这里的作用是字体映射成xml文件使得fop能够识别它们,所以要想Opentaps(OFBiz)能够使用它,你必须得你的操作系统支持这个字体。如果你操作系统不支持这个字体,下面的步骤很难实现。这个也是比较容易混淆和迷茫的地方。我们分成几个小步骤。
① 首先生成simhei.xml文件。生成这个方法比较简单的方法是把fop的依赖包先放进jre的lib的扩展包ext里面,我的路径是C:\Program Files\Java\jre6\lib\ext,后在控制台(cmd)直接执行java org.apache.fop.fonts.apps.TTFReader C:\Windows\Fonts\simhei.ttf D:\simhei.xml.(操作完了记得把他们删掉,因为放在这里了别的项目也会使用,很可能导致冲突,我自己就是,开始没有删除导致后来opentaps启动不了,因为包冲突了。)你会发现在d盘出现了simhei.xml的文件。
② 把C:\Windows\Fonts\simhei.ttf和simhei.xml一起考入到opentaps里面,路径为:${OPENTAPS_HOME}/opentaps/opentaps-common/lib/DejaVu下面。
2、修改ofbiz中fop的配置文件fop.xconf,路径为:${OPENTAPS_HOME}/framework/webapp/config/fop.xconf
添加字体:simhei
3、修改*.fo.ftl模板文件,把font-family改为simhei
重启看到pdf能正常显示中文了!
分享到:
相关推荐
OpenTaps(Open Source Total Appliance for Professional Services)是一款基于Apache OfBiz的企业级开源商务套件,旨在提供全面的企业应用解决方案,包括CRM(客户关系管理)、ERP(企业资源规划)、电子商务、...
通过这些组件,opentaps+ ofbiz为企业提供了强大的工具,实现从产品发布、价格策略制定到订单处理和促销活动管理的全面电子商务解决方案。这个系统允许企业高效地管理产品组合,优化客户体验,同时提高运营效率。
opentaps 所有表关联,HTML的。
Opentaps(Open Source Enterprise Applications Suite)是基于Ofbiz构建的一个全面的企业资源规划(ERP)和客户关系管理(CRM)解决方案。Opentaps不仅包含了Ofbiz的所有功能,还添加了更多的企业级特性,如高级...
Opentaps是一个开源的企业资源规划(ERP)和客户关系管理(CRM)系统,与Ofbiz紧密集成。这个压缩包文件包含了一系列文档,旨在帮助开发者和用户进行Opentaps的开发、安装、配置以及应用。 1. **安装文档.docx**: ...
根据提供的文件内容,我们可以提炼出关于opentaps开发环境配置与开发流程的知识点。文件内容涉及到opentaps系统中的web应用部署、源代码管理、热部署、界面组件开发以及后端服务调用等多个方面。 1. hot-deploy(热...
OpenTaps(Open Source Enterprise Applications and Processes)是一个开源的企业资源规划(ERP)和客户关系管理(CRM)系统。本文将深入探讨OpenTaps的结构分析,特别是其组件化设计和目录布局。 首先,我们来...
OFBiz API中文版.rar Apache OFBiz Cookbook Sep 2010.rar Opentaps widget使用说明.rar OFBiz.Development.2008.rar Groovy中文教程.rar freemarker中文手册.rar ofbiz10.04表结构.rar OFBiz开发指南.rar ...
OpenTaps(Open Source Total阿P Solution)是一款开源的企业资源规划(ERP)与客户关系管理(CRM)系统,它结合了电子商务、供应链管理、销售和市场等功能,为企业提供了一站式解决方案。在1.0.2版本中,它为开发者...
在Windows环境下安装Opentaps是一项综合性的IT任务,涉及到多个步骤和组件的配置。以下是根据提供的文件信息,详细解析在Windows下安装Opentaps所需的关键知识点: ### 1. 安装并配置JDK 首先,确保安装了JDK1.5或...
OPENTAPS(Open Source Enterprise Transaction Processing System)是一个全面的开源企业解决方案,它集成了CRM(客户关系管理)、ERP(企业资源规划)以及其他关键业务功能,如供应链管理、财务管理和生产制造等。...
学习Opentaps和Ofbiz的经典入门!
它的架构图展示了其核心组件和工作原理,而Opentaps(Open Source ERP + CRM)是基于OFBiz进行扩展和增强的另一个开源项目。 OFBiz的架构图主要包括以下几个关键部分: 1. **View Handler和Screen Widget Context*...
在Windows 7操作系统中安装...安装OpenTaps 1.5在Windows 7环境下需要一定的技术背景和耐心,但通过上述步骤,你应该能够成功完成安装。如果在安装过程中遇到任何问题,建议查阅官方文档或社区支持,以便获取更多帮助。
5. **常见问题解答(FAQ)**:列举了使用过程中可能遇到的问题及其解决方案,帮助用户自行解决一些常见问题。 6. **Release Notes**:记录了0.9版本相对于前一个版本的改变,包括新功能、改进、已知问题和修复的bug...
“Insider View”通常意味着内部视角或深入洞察,这份PDF文件很可能是由Ofbiz项目团队成员或经验丰富的开发者编写的,详细解析了Ofbiz的内部工作原理、设计理念、最佳实践,以及在实际项目中遇到的问题和解决方案。...
### OFBiz教程——初学者的开发指南 #### 一、引言 《OFBiz教程——初学者的开发指南》是一份面向初次接触OFBiz框架的开发者们的宝贵资源。OFBiz是一个开源的企业级Java电子商务框架,提供了强大的业务管理工具,...
别人写的一个ofbiz的一个简单的例子,希望对大家有用,顺便挣点儿积分!
### Openbravo 2.5在Windows XP下的安装与配置指南 #### 一、环境准备与配置 在开始安装Openbravo 2.5之前,我们需要先准备好一系列的基础软件及环境变量。 **1. 安装环境:** - **Oracle数据库:** 使用的是`win...