只使用reportlab库好像没法在已经有内容的PDF页面中写入数据,只能生成一个空的PDF文件再写入。所以这里我是配合pdfrw库来实现的。具体见示例

from reportlab.pdfgen.canvas import Canvas
from pdfrw import PdfReader
from pdfrw.buildxobj import pagexobj
from pdfrw.toreportlab import makerl
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.pdfmetrics import registerFont def pdf_write(input_file, output_file=None): text_dic = [
["ABCDEFG HIJKLMN", 90, 757, 12],
["123456789123456789", 90, 738, 10]
] if not output_file:
output_file = f'{os.path.splitext(input_file)[0]}_new.pdf'
registerFont(TTFont('yh', 'msyh.ttf')) # 设置文字字体 template = PdfReader(input_file)
canvas = Canvas(output_file) template_obj0 = pagexobj(template.pages[0])
obj0_name = makerl(canvas, template_obj0)
canvas.doForm(obj0_name) for value in text_dic:
canvas.setFont("yh", value[3]) # 设置字号
canvas.drawString(value[1], value[2], value[0]) canvas.showPage() # 关闭当前页,开始新页
template_obj1 = pagexobj(template.pages[1])
obj1_name = makerl(canvas, template_obj1)
canvas.doForm(obj1_name) canvas.save()

效果:

写入前


写入后


最新文章

  1. 全局变量 HInstance 到底是在什么时候赋值的?
  2. 偏移:translate ,旋转:rotate,缩放 scale,不知道什么东东:lineCap 实例
  3. python之excel自动报表
  4. 一. DotNet MVC4.0+EasyUI Web简单框架-前言
  5. yii2搭建完美后台并实现rbac权限控制案例教程
  6. 初识Go
  7. struts2更新版本操作有关事项备注
  8. BZOJ 4003 JLOI2015 城池攻占
  9. [Design Pattern] Flywight Pattern 简单案例
  10. 我使用过的Linux命令之file - 检测并显示文件类型
  11. ZOJ 3483 简单if-else
  12. RabbitMQ的简单应用
  13. Python-String字符串的相关方法
  14. 201621123057 《Java程序设计》第13周学习总结
  15. 如果以一个树状的形式返回一个UIView的所有子视图
  16. java 反射简说
  17. JDBC-HikariCP
  18. C/S与B/S的区别
  19. Oracle取月份-不带前面的0
  20. 非递归实现二叉树的三种遍历操作,C++描述

热门文章

  1. cmd/批处理常用命令
  2. 避免用Apache Beanutils进行属性的copy。why?让我们一起一探究竟
  3. odoo中的字段创建后,不可以编辑
  4. 对于Java平台的理解
  5. Dubbo 入门系列之基于 Dubbo API 开发微服务应用
  6. 云服务器安装Mysql之后,设置可以进行远程连接,Duplicaticate wntry '%-root' for key 'PRIMARY
  7. 以交互的方式升级ESXi主机
  8. Vue06 数据绑定
  9. Linux10-rpm和yum
  10. Html5 canvas创意特效合集