Tiny ERP 中文pdf报表设置

             Tiny ERP 中文pdf报表设置


来自Tiny ERP 中文知识库
http://www.shine-it.net/wiki/index.php?title=Tiny_ERP_%E4%B8%AD%E6%96%87pdf%E6%8A%A5%E8%A1%A8%E8%AE%BE%E7%BD%AE

跳转到: 导航, 搜索

Thank you knerz and vcc on Tiny ERP's official forum to provide us this solution.

感谢Tiny ERP官方网站上的vcc和knerz为我们提供了下面的解决方案

1. 获取中文字体文件 (本例中使用 arialuni.ttf (全称: "Arial Unicode MS"))

2. 复制至 tiny/bin/reportlab/fonts/

       它的这个说明是针对reportlab1.x的(如果我记得没错的话),现在我们用的是reportlab2.x,这样你可以把字体文件拷贝到reportlab的目录下,这个目录是在python的安装目录下的site-package>reportlab>font目录。当然你将字体文件放在tiny/bin/reportlab/fonts/下也没有问题,只要用 ln 命令做一个链接到上面所述的目录下就可以了

3. 编辑 tiny/report/render/rml2pdf/trml2pdf.py, 插入以下代码:

   encoding = 'UTF-8'
from reportlab.lib.enums import TA_LEFT, TA_RIGHT, TA_CENTER, TA_JUSTIFY
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle, StyleSheet1
def getZhSampleStyleSheet():
"""Returns a chinese stylesheet object"""
stylesheet = StyleSheet1()
stylesheet.add(ParagraphStyle(name='Normal',
fontName='Arial Unicode MS',
fontSize=10,
leading=12)
)
stylesheet.add(ParagraphStyle(name='BodyText',
parent=stylesheet['Normal'],
spaceBefore=6)
)
stylesheet.add(ParagraphStyle(name='Italic',
parent=stylesheet['BodyText'],
fontName = 'Arial Unicode MS')
)
stylesheet.add(ParagraphStyle(name='Heading1',
parent=stylesheet['Normal'],
fontName = 'Arial Unicode MS',
fontSize=18,
leading=22,
spaceAfter=6),
alias='h1')
  stylesheet.add(ParagraphStyle(name='Title',
parent=stylesheet['Normal'],
fontName = 'Arial Unicode MS',
fontSize=18,
leading=22,
alignment=TA_CENTER,
spaceAfter=6),
alias='title')
stylesheet.add(ParagraphStyle(name='Heading2',
parent=stylesheet['Normal'],
fontName = 'Arial Unicode MS',
fontSize=14,
leading=18,
spaceBefore=12,
spaceAfter=6),
alias='h2')
stylesheet.add(ParagraphStyle(name='Heading3',
parent=stylesheet['Normal'],
fontName = 'Arial Unicode MS',
fontSize=12,
leading=14,
spaceBefore=12,
spaceAfter=6),
alias='h3')
stylesheet.add(ParagraphStyle(name='Bullet',
parent=stylesheet['Normal'],
firstLineIndent=0,
spaceBefore=3), alias='bu')
stylesheet.add(ParagraphStyle(name='Definition',
parent=stylesheet['Normal'],
firstLineIndent=0,
leftIndent=36,
bulletIndent=0,
spaceBefore=6,
bulletFontName='Arial Unicode MS'),
alias='df')
stylesheet.add(ParagraphStyle(name='Code',
parent=stylesheet['Normal'],
fontName='Arial Unicode MS',
fontSize=8,
leading=8.8,
firstLineIndent=0,
leftIndent=36))
return stylesheet

4. 在同样的文件中搜索 reportlab.lib.styles.getSampleStyleSheet() 用 getZhSampleStyleSheet() 替换(共六处)

5. 编辑 tiny/report/render/rml2pdf/__init__.py, 插入以下代码:

   from reportlab.lib.fonts import addMapping
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.cidfonts import CIDFont, findCMapFile
from reportlab.lib.fonts import addMapping
pdfmetrics.registerFont(TTFont('Arial Unicode MS','arialuni.ttf'))
for facename in ['Arial Unicode MS']:
addMapping(facename, 0, 0, facename) #normal
addMapping(facename, 0, 1, facename) #italic
addMapping(facename, 1, 0, facename) #bold
addMapping(facename, 1, 1, facename) #italic and bold


6.回到tinyerp的安装目录。使用以下命令使所有的报表使用Arial Unicode MS 字体:

  
find ./bin/addons -name "*.rml" | xargs grep -l 'Times-Roman' | xargs sed -i 's/Times-Roman/Arial Unicode MS/g';
find ./bin/addons -name "*.rml" | xargs grep -l 'Times-BoldItalic' | xargs sed -i 's/Times-BoldItalic/Arial Unicode MS/g';
find ./bin/addons -name "*.rml" | xargs grep -l 'Times-Bold' | xargs sed -i 's/Times-Bold/Arial Unicode MS/g';
find ./bin/addons -name "*.rml" | xargs grep -l 'Times-Italic' | xargs sed -i 's/Times-Italic/Arial Unicode MS/g';
find ./bin/addons -name "*.rml" | xargs grep -l 'Helvetica-BoldOblique' | xargs sed -i 's/Helvetica-BoldOblique/Arial Unicode MS/g';
find ./bin/addons -name "*.xsl" | xargs grep -l 'Helvetica-BoldOblique' | xargs sed -i 's/Helvetica-BoldOblique/Arial Unicode MS/g';
find ./bin/addons -name "*.rml" | xargs grep -l 'Helvetica-Bold' | xargs sed -i 's/Helvetica-Bold/Arial Unicode MS/g';
find ./bin/addons -name "*.xsl" | xargs grep -l 'Helvetica-Bold' | xargs sed -i 's/Helvetica-Bold/Arial Unicode MS/g';
find ./bin/addons -name "*.xsl" | xargs grep -l 'Helvetica-Oblique' | xargs sed -i 's/Helvetica-Oblique/Arial Unicode MS/g';
find ./bin/addons -name "*.rml" | xargs grep -l 'Helvetica' | xargs sed -i 's/Helvetica/Arial Unicode MS/g';
find ./bin/addons -name "*.xsl" | xargs grep -l 'Helvetica' | xargs sed -i 's/Helvetica/Arial Unicode MS/g';
find ./bin/addons -name "*.rml" | xargs grep -l 'Courier-Bold' | xargs sed -i 's/Courier-Bold/Arial Unicode MS/g';
find ./bin/addons -name "*.xsl" | xargs grep -l 'Courier' | xargs sed -i 's/Courier/Arial Unicode MS/g';
find ./bin/addons -name "*.rml" | xargs grep -l 'Courier' | xargs sed -i 's/Courier/Arial Unicode MS/g'

搞定! 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值