壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4785|回复: 5

从weberp的utf8打印功能看weberp的系统结构

[复制链接]
发表于 2007/12/27 15:21:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
这篇文章应该在给正utf8打印功能的时候就发表,不过那天刚好是平安夜所以一直到现在才补上来。

webERP的utf8字符的支持功能一直是初次接触weberp的人想改善的问题,其实这个问题没有什么特别只是weberp一直支持lantin1字符它其实也支持中文,作者不想改而已,为什么不想改据说是utf8会加大传输量,但大家都觉得要改是因为phpmyadmin现在默认的字符为utf8,所以latin1字符在phpmyadmin2.53(不信可以自己下个2.5.3的phpmyadmin)后都是乱码大家觉得很不爽。所以大家都想改正这个不是bug的bug。

要改正这个问题首先得清楚utf8字符在php,mysql里面如何运作,简单一句就是weberp,mysql的数据库和校验都得用utf8。今天的说的不是这个,主要说的是解决打印的乱码问题,就是让weberp打印支持utf8,其实具体的解决方法在http://www.fpdf.org/论坛里已经说清楚了,就是wangfeiok给出的例子pdf-chinese的例子,里面的chinese-unicode就是整个问题的关键代码。这里说的是通过这个问题的修正进一步了解weberp的代码结构。好现在正式开始。

首先我们想修改打印功能,首先着手的就是看看打印用了那个脚本以销售订单为例,它首先调用的是PrintCustOrder_generic.php ,我们打开PrintCustOrder_generic看看代码。开始
include('includes/header.inc');
和include('includes/footer.inc');         是显示部分,和打印没关系
$sql = "SELECT salesorders.debtorno,。。。。。。sql语句,       访问数据库的。
if (DB_num_rows($result)==0)                                                    表示没数据返回时的显示页,有数据时的一些处理
$PaperSize = 'A4_Landscape';                                                      其实有经验一开始就在这开始
include('includes/PDFStarter.php');                                               这里调用了另一个文件。
后面的程序是针对销售单的打印,从这里就可以看出其实weberp的面向对象不错,结构也很好,因为显示(打印也是显示)和功能已经分开了至少mvc做好一大半。

好转到PDFStarter.php
include ('includes/class.pdf.php');                                                    一开头就调用另一个文件,先等下我们先看看下面的
switch ($PaperSize)                                                                        下面就是页尺寸的设置。
$pdf = & new Cpdf($PageSize);                                                      好了这里生成一个pdf的对象类为cpdf我们先记住
后面的代码很少也基本建立在cpdf类上

再转class.pdf.php  这个class.pdf.php是整个的关键
include ('includes/fpdf.php');                                                          这又调用了一个文件fpdf.php,熟悉php的人知道fpdf是
                                                                                                     php一个基本类专门支持pdf的,而且这个类只有php才                                                                                                    会去修改,一般开发者是不会动的因为要附加的功能可以
                                                                                                    通过继承来实现,后面就看到。
if ($_SESSION['Language']=='zh_CN' OR 。。。。。{                       
    include('FPDF_Chinese.php');                                                    这里再调用了一个fpdf_chinese的文件先放下 继续             。


class Cpdf extends PDF_Language                                                这定义了一个类cpdf如果大家通过前后的对比就知道是  
                                                                                                     这个类实现了打印的utf8支持
                                                                                                     至于原理是什么就不说了。好了那大家可能会问那
                                                                                                    PDF_Language 是干什么的。
                                                                                                    这里的cpdf是继承PDF_Language
                                                                                                     这个类的大家可以看到phph怎样为类加功能或改功能。
                                                                                                    那pdf——language是干什么的?

现在来打开fpdf_chinese
require('fpdf.php');                                                                       又调用了fpdf其实用require_once只调用一次就可以了,
                                                                                                    看来weberp的代码可以优化下。
$Big5_widths=



$GB_widths=array



class PDF_Language extends FPDF                                             这也定业了一个类pdf_language结合上面的数组大概就能
                                                                                                  猜到这个类是用来支持中文的



这里说明下pdf_chinese这个文件是weberp自身带的,就是weberp本身就支持中文繁简体。我开始的时候修改weberp的utf8支持就是想修改这个类,不过呵呵不成功,原因吗学艺未精,不过没关系留待下次大家共同努力。

通过分析我们可以看出weberp的结构也是比较清晰的,当然他还可以做得更清晰明了,不过如果再深化下去得付出更多的代价,估计作者也没这个打算,因为从weberp的功能就知道作者是一个一切从简的人,没什么花俏的功能,但简单易用,这就是weberp。

附件是我写的一个新的销售单专门支持多层复写纸的。

[ 本帖最后由 simonz 于 2007-12-27 21:58 编辑 ]

xiaoshoudan.zip

3.75 KB, 下载次数: 24, 下载积分: 努力值 -5 点

发表于 2008/4/16 15:33:57 | 显示全部楼层

好好

dgdgdsgdsgdsg
发表于 2009/1/22 14:15:07 | 显示全部楼层
thank!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
发表于 2011/12/7 22:23:17 | 显示全部楼层
谢谢分享!我下了改了一下,但是还是没有做到我要的效果,继续学习!谢谢喔!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 06:26 , Processed in 0.016772 second(s), 15 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表