python修改pdf内容

news/2024/11/24 4:57:28/

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

 


http://www.ppmy.cn/news/694998.html

相关文章

为什么大家都在用 PDF? PDF 文档怎么修改?

“为什么我们用 PDF,不用 PPT?相近的功能,明明是 PPT 更方便修改呀!” 以 PDF 文档的格式将方案、报表、图文呈现给客户,似乎是职场上约定俗成的规则。这像是一个“知其然不知其所以然”的困境,那今天&…

PDF怎么编辑修改内容

现在的一些办公文档普遍都是PDF格式,很多文档在传递时也都会转成PDF,但这种格式文件有一个不便之处,就是编辑处理起来没有Word文档那么流畅顺手。对于office这类常见的文档相信大部分人都知道怎样编辑操作,但是要遇到pdf这种格式文…

PDF如何修改编辑文字?两种简单的方法分享给大家

PDF文件如何编辑修改文字呢?大家在日常的工作和学习中,免不了会使用PDF文件,用它来发送文件或者是用PDF文件形式来保存文件都是很好的选择。如果有的小伙伴在准备什么考试,从一些资源网站上下载下来的文件资料,绝大多数…

怎么修改PDF文件的内容?教你两招快来看看

说到PDF,这应该是我们都使用过的一种文档格式了,不管是生活中还是在工作中,PDF文件都不会陌生,因为其本身比较好的私密性,并且与其他文件格式的兼容性也非常好所以深受大家的喜欢,但又由于其本身的私密性较…

怎么在PDF上直接修改?最新教程来了

怎么在PDF上直接修改?不知道你们有没有遇到过这种情况,发现一个PDF文件里面有严重的错误,继续修改,可能很多人的做法都是先把PDF文件转换成Word格式,修改好后再转换成PDF格式,确实是一个好办法,…

PDF怎么编辑修改内容?分享两种编辑修改方法

PDF文件怎么编辑修改内容呢?PDF格式的文件是大家在工作中经常会使用到的,可以用来发送文件、阅读文件或者是保存文件。相信大家在阅读使用的时候,肯定有过需要编辑修改文件内容的需求,因为当我们发现文件中出现错误或者是不合适的…

PDF文件中的文字怎么修改?来试试这种修改方法

PDF文件中的文字怎么把它给修改过来呢?PDF文件大家经常会使用,在使用的过程中,肯定有发现文件中出现错误的经历,面对这些错误的文字或者是图片,我们怎么才能做到把它们给编辑修正呢?因为一般情况下&#xf…

怎么修改PDF文件中的文字?快来学这两种方法

PDF文件中出现错误的语句、字词,我们应该怎么修改呢?大家在办公过程中经常会使用PDF格式来传输文件,如果在浏览的过程中看到文件中有的语句有语法错误或者是错别字,想要进行修改,但PDF格式大家都知道是没法直接修改的&…