1. 说明

需求:生成pdf格式的证书,证书其实是有个模板的(下面测试我随便做了一个),不过内容(主要是证书上的文字)需要自己动态填写
语言:python
引入库: PyPDF2 - 负责读写和合并pdf;  (PyPDF2 1.26.0)reportlab - 负责绘画(创建)生成一个新的pdf   (reportlab 3.5.67)基于Python 3.6.8
思路:使用reportlab的canvas根据坐标(以左下角为原点,使得整个pdf page在第一象限)绘制新的pdf文件放到内存,使用PyPDF2读取pdf模板,合并上面生成的新的pdf page,然后将合并后的pdf写入文件
说明:reportlab默认不支持中文,直接绘制中文字符会显示小方框乱码,需要先注册字体,字体直接引用系统ttf文件即可注意canvas的坐标系,即第一象限,绘制时可能要多次测试调整x,y的值使得内容显示恰当,然后合并后生成你所需要的pdf
证书模板:我这里是随便找了个证书图片(百度搜一堆,把内容擦掉即可),使用gimp工具导出为pdf(file - export as修改文件名字为test.pdf然后导出)
参考:https://www.reportlab.com/docs/reportlab-userguide.pdf
Demo证书图片:https://www.google.com/url?sa=i&url=http%3A%2F%2F616pic.com%2Fimage%2Fzhengshu.html&psig=AOvVaw2yhE9FezNqC-6U4kgBWDun&ust=1619226823600000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCMCejI-Yk_ACFQAAAAAdAAAAABAD

2. 效果

3. 代码

from PyPDF2 import PdfFileWriter, PdfFileReader
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
pdfmetrics.registerFont(TTFont('SimHei', r'C:\Windows\Fonts\simhei.ttf'))if __name__ == '__main__':packet = io.BytesIO()# create a new PDF with Reportlabcan = canvas.Canvas(packet, pagesize=letter)can.setFillColorRGB(0, 0, 0)  # choose your font colourcan.setFont("SimHei", 3)  # choose your font type and font sizecan.drawString(18, 50, "小明 同学")  # namecan.drawString(20, 40, "恭喜小明同学在这次数学竞赛中取得第一名,特此奖励!")can.drawString(80, 30, "阳光小学一班")can.drawString(80, 20, "二O二一年四月二十三号")can.save()# move to the beginning of the StringIO bufferpacket.seek(0)new_pdf = PdfFileReader(packet)# read your existing PDFexisting_pdf = PdfFileReader(open(r"C:\Users\jalchu\Desktop\test.pdf", "rb"))output = PdfFileWriter()# add the "watermark" (which is the new pdf) on the existing pagepage = existing_pdf.getPage(0)page.mergePage(new_pdf.getPage(0))output.addPage(page)# finally, write "output" to a real fileoutputStream = open(r"C:\Users\jalchu\Desktop\demo.pdf", "wb")output.write(outputStream)outputStream.close()print('end')

python修改pdf内容相关推荐

  1. 如何用python修改pdf内容_如何利用python将pdf文件转化为txt文件?

    https://www.wukong.com/answer/6579491774144708872/?iid=15906422033&app=news_article&share_an ...

  2. python 修改pdf内容,如何使用python更改pdf内的超链接?

    How do I change the hyperlinks in pdf using python? I am currently using a pyPDF2 to open up and loo ...

  3. 用python修改文件内容修改txt内容的3种方法

    用python修改文件内容修改txt内容的3种方法 方法一.修改原文件方式 def updateFile(file,old_str,new_str):"""替换文件中的字 ...

  4. 如何修改PDF内容,PDF怎么旋转页面

    在编辑PDF文件的时候总会遇到各种各样的问题,编辑PDF文件是需要用到PDF编辑器的,在使用PDF编辑器修改文件的时候,文件中的页面不是正常显示的,该如何将页面进行旋转呢,不会的话,就一起看看下面的文 ...

  5. 怎么修改PDF内容,PDF文件如何修改文字

    相信现在大家都接触到PDF文件了吧,相信大家也发现了PDF文件上面的文字不可以直接的修改编辑,PDF文件的编辑是需要PDF编辑器的,那么,如何修改PDF内容,修改PDF文字呢,是不是有很多的小伙伴不知 ...

  6. 什么软件可以修改PDF内容,PDF如何添加文本

    目前很多用户会使用PDF文档来传输一些数据,所以我们经常需要对PDF文档进行编辑.一般情况下,我们大家会在Word上编辑好后将其转换成PDF.但是有时候这样做的话,效率会有点低.那么,我们可以借助PD ...

  7. Python读取PDF内容

    1,引言 晚上翻看<Python网络数据采集>这本书,看到读取PDF内容的代码,想起来前几天集搜客刚刚发布了一个抓取网页pdf内容的抓取规则,这个规则能够把pdf内容当成html来做网页抓 ...

  8. python修改文件内容_Python批量修改文本文件内容的方法详解

    这篇文章主要介绍了Python批量修改文本文件内容的方法的相关资料,需要的朋友可以参考下 Python批量替换文件内容,支持嵌套文件夹 import os path="./" fo ...

  9. 怎么修改_PDF怎么修改文字?其实修改PDF内容很简单

    PDF文件是工作和生活中经常会使用的一种,这类文件的优点是兼容性较好,即使在多种设备上打开阅读也不容易变成乱码文件:但同时这也是它的缺点就是不易编辑修改内容了,如果修改pdf文件中的内容,我们是可以借 ...

  10. python修改文件内容,不需要read,write多个动作。

    python  要修改文件内容,常用 是先read,后write , 再 rename,很不爽. 比如:需要 把       yuv_dir ="../HD/"   # " ...

最新文章

  1. 【小贴士】在线画流程图工具
  2. php正则判断不规范字符串,php学习_第9章_字符串处理与正则表达式
  3. wxWidgets:多线程概述
  4. redis配置环境变量
  5. 象棋子 设计模式_通过设计国际象棋游戏了解策略模式
  6. 版本低于1.7的jQuery过滤用户输入数据所使用的正则表达式存在缺陷
  7. 602B. Approximating a Constant Range
  8. OpenGL ES入门
  9. C++ 类的前向声明
  10. 远程连不上mysql_解决MySQL远程连接不上的问题
  11. centos服务器安装python3,CentOS7 服务器上如何安装python3
  12. Android信息处理机制
  13. 批量抓取羊毛网站信息,定时自动发送到邮箱进行阅览
  14. java中的element_element是什么意思
  15. 【SQL解析】- SQL血缘分析实现篇01
  16. 转录组入门(4):了解参考基因组及基因注释
  17. QT OpenCV人脸考勤识别
  18. 黑马程序员_程序代码实现进制转换
  19. 2017面向对象程序设计(Java)第十七周助教工作总结
  20. vue使用element-ui的el-date-picker设置样式无效

热门文章

  1. 计算机设备招标书范文,计算机设备招标书
  2. 微信小程序实现将图片保存到手机相册
  3. 递归算法php,PHP递归算法的详细示例分析
  4. 十款免费数据恢复软件
  5. 推荐一款2.5v 基准 电压源 芯片
  6. php分享网ecshop二次开发视频教程,ecshop二次开发--视频上传
  7. ubuntu安装utorrent,以闪电的速度在六维空间下载东西!
  8. 请熟悉SQL server的高手赐教。
  9. win10 怎么把任务栏变透明
  10. 杨凌职业技术学院计算机专业宿舍,杨凌职业技术学院宿舍条件怎么样,有独立卫生间和空调吗...