打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python PDF 之 pisa 及 中文问题
Python Pisa HTML2PDF
官方网站:
django reportlab: http://docs.djangoproject.com/en/dev/howto/outputting-pdf/
pisa: http://pypi.python.org/pypi/pisa/3.0.10
Pisa Views 代码:
Java代码 
 
########PDF##########################################
#Doc
#http://www.20seven.org/journal/2008/11/pdf-generation-with-pisa-in-django.html
#http://go3.daili39.com/browse.php?u=025a56434191163d635T2k4dlltRjZZV0Z5TG14aGRXNWphSEJoWkM1dVpYUXZKVGRGY0dGelkyRnNMV0poWTJndkpUSkNhblZ1YXk5d2FYTmhMMlpwYkdWekwyaGxZV1FsTTBFdmNHbHpZVE12&b=1
#http://pypi.python.org/pypi/pisa/3.0.27
#安装依赖
#easy_install reportlab
#easy_install html5lib
#返回PDF
def pdf(request):
html = 0
if html:
return render_to_response('dfiles/report.html', {
'username' : " 柳争 ","content":"AA"* 20
}, context_instance=RequestContext(request))
else:
return write_pdf('dfiles/report.html',{
'pagesize' : 'A4',
'article' : "LIUZHEBG","content":"AA"* 20})
#生成PDF
def write_pdf(template_src, context_dict):
template = get_template(template_src)
context = Context(context_dict)
html  = template.render(context)
result = StringIO.StringIO()
#如果需要访问远程资源需要将远程资源读到本地,作为临时文件保存
#读取方法:pisa.pisaLinkLoader(url).getFileName
pdf = pisa.pisaDocument(StringIO.StringIO(
html.encode("UTF-8")), result,link_callback = pisa.pisaLinkLoader(url).getFileName)
#生成PDF
if not pdf.err:
return http.HttpResponse(result.getvalue(), \
mimetype='application/pdf')
else:
return http.HttpResponse('error')
#获得本地资源
def fetch_resources(uri, rel):
path = os.path.join(settings.MEDIA_ROOT,uri.replace(settings.MEDIA_URL, ""))
return path
Pisa中文问题完美解决方案:
将以下几行加入你的 Views 文件
Java代码 
 
#########Set FONT (微软雅黑)#################
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont('msyh', 'path_to_your_font/msyh.ttf'))
from sx.pisa3 import pisa_default
pisa_default.DEFAULT_FONT["helvetica"]="msyh"
其他方式:
Pisa 中文问题:
1. 将 pisa/sx/pisa3/pisa_default.py 文件中的
#"helvetica": "Helvetica",
"helvetica": "msyh", 替换。
2. 在 pisa/sx/pisa3/__init__.py 中添加如下代码片段:
Python代码 
 
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
reportlab.rl_config.warnOnMissingFontGlyphs = 0
pdfmetrics.registerFont(TTFont('msyh', 'path_to_your_font\msyh.ttf'))
3. 接下来运行程序就ok了。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在python中使用pisa生成pdf对中文的处理:
[python学习] 模仿浏览器下载CSDN源文并实现PDF格式备份
Python怎么给PDF文件添加水印?Python如何像pdf中添加文字水印
3个Python PDF库,提取信息、转换格式、分割剪裁有它就够了!
为了学爬虫,我用三步爬取了大佬崔庆才爬虫相关文章,并保持为pdf学习
常用的python模块功能和下载地址
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服