Magento打印(配送单、退款单、发票)时PDF中的乱码问题

我使用Magento1.4.2,在其自带的TTF文件不能很好地解析中文字符,TTF文件的位置在网站根目录下的/lib/LinLibertineFont/中。打印的中文字符都是这样的

解决方法:

1.在Windows下复制一个MSYHBD.TTF(微软雅黑)至网站根目录下的/lib/LinLibertineFont/中

2.修改app\code\core\Mage\Sales\Model\Order\Pdf\Abstract.php

[php] view plaincopy

  1. protected function _setFontRegular($object, $size = 7)
  2. {
  3. //$font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . ‘/lib/LinLibertineFont/LinLibertineC_Re-2.8.0.ttf‘);注释掉这行
  4. $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . ‘/lib/LinLibertineFont/MSYHBD.TTF‘);
  5. $object->setFont($font, $size);
  6. return $font;
  7. }
  8. protected function _setFontBold($object, $size = 7)
  9. {
  10. // $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . ‘/lib/LinLibertineFont/LinLibertine_Bd-2.8.1.ttf‘);注释掉这行
  11. $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . ‘/lib/LinLibertineFont/MSYHBD.TTF‘);
  12. $object->setFont($font, $size);
  13. return $font;
  14. }
  15. protected function _setFontItalic($object, $size = 7)
  16. {
  17. //$font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . ‘/lib/LinLibertineFont/LinLibertine_It-2.8.2.ttf‘);注释掉这行
  18. $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . ‘/lib/LinLibertineFont/MSYHBD.TTF‘);
  19. $object->setFont($font, $size);
  20. return $font;
  21. }

注:这里主要是讲解解决方法,实际修改请将上述方法写成插件的形式,不要破坏Magento的产品代码。

原文:http://blog.csdn.net/liangpei2008/article/details/7574694

时间: 2024-09-29 02:55:50

Magento打印(配送单、退款单、发票)时PDF中的乱码问题的相关文章

拒绝乱码:打印俄文快递单时,避免俄文乱码的方法

俄文字母与拉丁文字母转换表 А = A Б = B В = V Г = G Д = D Е = E 或JE Ё = E 或 JE Ж = ZH 或 J З = Z И = I Й = J 或 I К = K Л = L М = M Н = N О = O П = P Р = R С = S Т = T У = U Ф = F Х = H 或 KH Ц = C Ч = CH 或TCH Ш = SH Щ = SCH 或 SC Ъ = 不用写拉丁字母 Ы = Y Ь = 不用写拉丁字母 Э = E Ю

单?片?机?定?时?器?初?值?实例计?算?

一.10MS定时器初值的计算:  1.晶振12M  12MHz除12为1MHz,也就是说一秒=1000000次机器周期.10ms=10000次 机器周期.  65536-10000=55536(d8f0)  TH0=0xd8,TL0=0xf0  2.晶振11.0592M  11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期.  65536-9216=56320(dc00)  TH0=0xdc,TL0=0x00 二.50MS定时器初值的计算:

SpringMVC中使用bean来接收form表单提交的参数时的注意点

这是前辈们对于SpringMVC接收表单数据记录下来的总结经验: SpringMVC接收页面表单参数 springmvc请求参数获取的几种方法 下面是我自己在使用时发现的,前辈们没有记录的细节和注意点: 使用bean来接收form表单提交的参数时,pojo中必须含有默认的(即空的)构造函数,同时,需要设置到bean中的变量必须有setter方法. 注:以下代码均为示例代码,非本人实际运行代码,请自行补充. 例如:我有一个bean类是User,具有变量username和password.同时,表单

Struts2表单提交的中文字符数据用hibernate存储在数据库中是乱码的问题。

1.先检查中文字符出现乱码的位置,于是就在action中用printf方法打印表单提交的中文数据到控制台,发现是乱码. 2.于是问题就转换成了先解决jsp表单提交的中文数据到action中出现乱码的问题, 3.百度了一下,发现是因为我的struts.xml文件建立的时候直接在网上copy的模板,encoding属性设置的是UTF-8我忽略了,而我jsp的encoding属性设置的是gbk,导致两者不一致(因为之前入门的时候教程里面讲的就是gbk方式,于是我也沿用了这种方式.)我eclipse的文

STM32_ADC单通道单次采集

今天讲解"STM32F103 ADC单通道单次采集"功能. 今天提供并讲解的软件工程,基于软件工程"A0.0.0(STM32F10x_TIM延时)"修改而来.若不知道如何而来,请关注微信公众号"EmbeddDeveloper"获取更多信息. 本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,增加一下人气. 每天提供下载的"软件工程"都是在硬件板子上进行多次测试.并保证没问题才上传至360云盘.

Java底层代码实现单文件读取和写入(解决中文乱码问题)

需求: 将"E:/data/车站一次/阿坝藏族羌族自治州.csv"文件中的内容读取,写入到"E:/data//车站一次.csv". 代码: public class FileOpe { public static void main(String[] args) { sigle(); } public static void sigle(){ BufferedReader bufr = null; BufferedWriter bufw = null; try {

并发无锁队列学习之二【单生产者单消费者】

1.前言 最近工作比较忙,加班较多,每天晚上回到家10点多了.我不知道自己还能坚持多久,既然选择了就要做到最好.写博客的少了.总觉得少了点什么,需要继续学习.今天继续上个开篇写,介绍单生产者单消费者模型的队列.根据写入队列的内容是定长还是变长,分为单生产者单消费者定长队列和单生产者单消费者变长队列两种.单生产者单消费者模型的队列操作过程是不需要进行加锁的.生产者通过写索引控制入队操作,消费者通过读索引控制出队列操作.二者相互之间对索引是独享,不存在竞争关系.如下图所示: 2.单生产者单消费者定长

html5-增强的表单-表单的重写

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>新增的表单-表单的重写</title></head><body>    <form action="" target="blank" id="myform"&g

并发无锁队列学习(单生产者单消费者模型)

1.引言 本文介绍单生产者单消费者模型的队列.根据写入队列的内容是定长还是变长,分为单生产者单消费者定长队列和单生产者单消费者变长队列两种.单生产者单消费者模型的队列操作过程是不需要进行加锁的.生产者通过写索引控制入队操作,消费者通过读索引控制出队列操作.二者相互之间对索引是独享,不存在竞争关系.如下图所示: 2.单生产者单消费者定长队列 这种队列要求每次入队和出队的内容是定长的,即生产者写入队列和消费者读取队列的内容大小事相同的.linux内核中的kfifo就是这种队列,提供了读和写两个索引.