使用python往已有内容的PDF文件写入数据
2024-10-21 03:25:14
只使用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()
效果:
写入前
写入后
最新文章
- 全局变量 HInstance 到底是在什么时候赋值的?
- 偏移:translate ,旋转:rotate,缩放 scale,不知道什么东东:lineCap 实例
- python之excel自动报表
- 一. DotNet MVC4.0+EasyUI Web简单框架-前言
- yii2搭建完美后台并实现rbac权限控制案例教程
- 初识Go
- struts2更新版本操作有关事项备注
- BZOJ 4003 JLOI2015 城池攻占
- [Design Pattern] Flywight Pattern 简单案例
- 我使用过的Linux命令之file - 检测并显示文件类型
- ZOJ 3483 简单if-else
- RabbitMQ的简单应用
- Python-String字符串的相关方法
- 201621123057 《Java程序设计》第13周学习总结
- 如果以一个树状的形式返回一个UIView的所有子视图
- java 反射简说
- JDBC-HikariCP
- C/S与B/S的区别
- Oracle取月份-不带前面的0
- 非递归实现二叉树的三种遍历操作,C++描述
热门文章
- cmd/批处理常用命令
- 避免用Apache Beanutils进行属性的copy。why?让我们一起一探究竟
- odoo中的字段创建后,不可以编辑
- 对于Java平台的理解
- Dubbo 入门系列之基于 Dubbo API 开发微服务应用
- 云服务器安装Mysql之后,设置可以进行远程连接,Duplicaticate wntry '%-root' for key 'PRIMARY
- 以交互的方式升级ESXi主机
- Vue06 数据绑定
- Linux10-rpm和yum
- Html5 canvas创意特效合集