用Python制作PDF【1】

目录

前言

一. 导入reportlab库

二. 创建PDF类

三. 保存

四. 问题解决

五. 写上文字

1. 解释

2. 运用

3. 写入中文字体

①找出一个TTF文件字体

 ②导入reportlab的相关font库

 ③设置字体

4. 调整字体大小

5. 运用

六. 总结

参考文献


前言

reportlab库是一个专门使用Python来制作,修改PDF的库。我们使用这些库,可以产生与Adobe Acrobat DC相同的效果。今天的文章先介绍如何用reportlab库来新建PDF文件,在PDF文件里写上文字。

一. 下载reportlab库

打开命令提示符,输入:

pip install reportlab -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完再输入pip list,看看有没有安装成功。 

二. reportlab新建一个PDF文件

1. 导入reportlab库

因为reportlab库里有许多功能,所以在这篇文章里导入一个就够了。

from reportlab.pdfgen import canvas

2. 创建PDF类

我们把类名叫做c。在canvas.Canvas里我们要加上PDF文件的名字。

c = canvas.Canvas('demo.pdf')

3. 保存

直接调用这个方法,程序结束后在程序旁边就有一个demo.pdf了。

c.save()

4. 问题解决

这时候有些人打开后会出现这样的界面

用Python制作PDF【1】_第1张图片

这是因为我们没有对里面进行写入操作。虽然里面什么都没有,但这样打开是会报错的。

所以,我们要在c.save()之前加上这一行代码

c.showPage()

这一个会让PDF转到下一页,同时如果前面什么也没有就只显示上一页。

用Python制作PDF【1】_第2张图片

 问题解决!

三. 写上文字

1. 解释

我们在写字时会有两种方法

c.drawString(x, y, content)
c.drawCentredString(x, y, content)
  • x: 文字的x坐标值
  • y: 文字的y坐标值
  • content: 文字的内容

这两个方法的不同之处在于第一个是对准文字的左下角,第二个是对准文字的正中间。

2. 运用

这里注意,如果你在第一页写了东西,且不想创建新页的话就不要加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文件。

用Python制作PDF【1】_第3张图片

 成功!

3. 写入中文字体

如果把第5行的文字改成中文,会出现和matplotlib一样的黑色的字。

用Python制作PDF【1】_第4张图片

①找出一个TTF文件字体

解决这个问题,首先需要一个含有中文字体的TTF文件 。如果没有现成的可以在windows系统下

设置>>个性化>>字体管理>>打开一个有中文字体示例的文件>>在其信息里找到保存的位置

用Python制作PDF【1】_第5张图片

用Python制作PDF【1】_第6张图片

用Python制作PDF【1】_第7张图片

 ②导入reportlab的相关font库

from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.pdfmetrics import registerFont

 ③设置字体

registerFont(TTFont(name, file))
c.setFont(font, size)
  • name: 字体文件导入后的名字
  • file: 字体文件的路径
  • font: 在已有的字体文件里选出一个
  • size: 字体的大小

第一行是把这个字体文件导入到程序里。

第二行是设置画布(PDF的类)的字体及大小。

4. 调整字体大小

如果要调整字体的大小,可以直接使用这个方法

c.setFontSize(size)
  • size: 字体的大小

当然,这个字体是里面设置的字体。

5. 运用

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'))

用Python制作PDF【1】_第8张图片

成功! 

四. 总结

这篇文章主要讲解了如何基本使用reportlab库的基本使用方法,以及输出中文字体的方法。

参考文献

https://www.reportlab.com/

Reportlab生成图文并茂的pdf报告_宋宋讲编程的博客-CSDN博客

你可能感兴趣的:(Python,reportlab,pdf)