目录
前言
一. 导入reportlab库
二. 创建PDF类
三. 保存
四. 问题解决
五. 写上文字
1. 解释
2. 运用
3. 写入中文字体
①找出一个TTF文件字体
②导入reportlab的相关font库
③设置字体
4. 调整字体大小
5. 运用
六. 总结
参考文献
reportlab库是一个专门使用Python来制作,修改PDF的库。我们使用这些库,可以产生与Adobe Acrobat DC相同的效果。今天的文章先介绍如何用reportlab库来新建PDF文件,在PDF文件里写上文字。
打开命令提示符,输入:
pip install reportlab -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完再输入pip list,看看有没有安装成功。
因为reportlab库里有许多功能,所以在这篇文章里导入一个就够了。
from reportlab.pdfgen import canvas
我们把类名叫做c。在canvas.Canvas里我们要加上PDF文件的名字。
c = canvas.Canvas('demo.pdf')
直接调用这个方法,程序结束后在程序旁边就有一个demo.pdf了。
c.save()
这时候有些人打开后会出现这样的界面
这是因为我们没有对里面进行写入操作。虽然里面什么都没有,但这样打开是会报错的。
所以,我们要在c.save()之前加上这一行代码
c.showPage()
这一个会让PDF转到下一页,同时如果前面什么也没有就只显示上一页。
问题解决!
我们在写字时会有两种方法
c.drawString(x, y, content)
c.drawCentredString(x, y, content)
这两个方法的不同之处在于第一个是对准文字的左下角,第二个是对准文字的正中间。
这里注意,如果你在第一页写了东西,且不想创建新页的话就不要加c.showPage()了。
from reportlab.pdfgen import canvas
import webbrowser
import os
c = canvas.Canvas('demo.pdf')
c.drawString(0,0,'Hello, world!')
c.save()
webbrowser.open('file://' + os.path.realpath('demo.pdf'))
这里的最后一行是直接用程序打开这个PDF文件。
成功!
如果把第5行的文字改成中文,会出现和matplotlib一样的黑色的字。
解决这个问题,首先需要一个含有中文字体的TTF文件 。如果没有现成的可以在windows系统下
设置>>个性化>>字体管理>>打开一个有中文字体示例的文件>>在其信息里找到保存的位置
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.pdfmetrics import registerFont
registerFont(TTFont(name, file))
c.setFont(font, size)
第一行是把这个字体文件导入到程序里。
第二行是设置画布(PDF的类)的字体及大小。
如果要调整字体的大小,可以直接使用这个方法
c.setFontSize(size)
当然,这个字体是里面设置的字体。
from reportlab.pdfgen import canvas
import webbrowser
import os
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.pdfmetrics import registerFont
c = canvas.Canvas('demo.pdf')
registerFont(TTFont('fangzheng', 'fangzheng.TTF'))
c.setFont('fangzheng', 35)
c.drawString(0, 0, '你好,世界')
c.save()
webbrowser.open('file://' + os.path.realpath('demo.pdf'))
成功!
这篇文章主要讲解了如何基本使用reportlab库的基本使用方法,以及输出中文字体的方法。
https://www.reportlab.com/
Reportlab生成图文并茂的pdf报告_宋宋讲编程的博客-CSDN博客