用reportlab库生成证件的PDF格式文件

reportlab库是用来生成报表的,它可以直接生成PDF格式的报表文件,也可以用来生成证件的PDF格式文件,便于分发和打印。

reportlab生成证件PDF格式文件的基本步骤:

1.建立文件;

2.添加证件信息数据(姓名、性别、照片等。)

3.保存PDF文件;

reportlab库不直接支持中文字体,所以还需要先注册一个或多个中文字体库。

其基本流程源代码如下:

from reportlab.pdfgen import canvas
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
from reportlab.lib.units import cm

## 定义注册中文字体字库的方法,此处默认为微软雅黑,
## 字体库文件的存放路径为当前目录,所以直接使用文件名
def set_font(canv,size,font_name='msyh',font_file='msyh.ttf'):
    pdfmetrics.registerFont(TTFont(font_name,font_file))
    canv.setFont(font_name,size)

## 定义PDF文件存放文件名
pdf_path = "d:\\test.pdf"
## 建立文件
canv = canvas.Canvas(pdf_path,pagesize=(20*cm,16*cm))
## 设置字体及字号
set_font(canv,16)
## 写入证件的相关文字信息其位置为x*cm,y*cm
canv.drawString(x*cm,y*cm,info)
## 写入证件的照片信息其位置为xp*cm,yp*cm
canv.drawImage('photo.jpg',xp*cm,yp*cm)
## 设置要添加的水印文字颜色及透明度
canv.setFillColorRGB(180,180,180,alpha=0.3)
## 写入水印文字,这里将水印文字放在证件照上
canv.drawString(xp*cm+cm,yp*cm+0.5*cm,WATERMARK_TXT)
## 完成证件PDF一页
canv.showPage()
## 保存PDF文件
canv.save()

这里值得注意的是:

1.reportlab库中坐标原点为页面的左下角,指定写入位置的坐标时应注意。

2.reportlab库中坐标的度量单位为像素点,使用的分辨率为72dpi,即像素每英寸。所以如果厘米作坐标单位的话,就要使用上面代码中方式,即导入cm,cm实际上是1cm所代表的像素点数,代码中20*cm即20cm所代表的像素数。

3.如果你需要生成大量的证件PDF文件(包括从数据库中查询证件个人信息并生成证件PDF文件),相信你对代码简单改造后完全可以实现。

最后,以下生成的基本样式:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值