多线程的应用
01 . PDF文件读操作
-
pypdf2 - 以页为单位对PDF文件进行读写操作(无法直接操作每一页内容)。
-
打开文件创建reader对象(相当于PDF文件对象)。
-
获取PDF文件的页数。
-
获取指定的页,返回页对象 - reader对象 . getpage(页的下标):获取指定页,下标从0开始。
from PyPDF2 import PdfFileReader reader = PdfFileReader(open('files/学习路线图水印.pdf','rb')) num = reader.getNumPages() for index in range(num): page = reader.getNumPages(index)
02 . PDF文件写操作
-
创建writer对象,会自动创建一个空的PDF文件
-
添加页
writer.addPage(reader.getPage(0))
-
添加空白页
writer.addBlankPage(400,600)
-
保存文件
from PyPDF2 import PdfFileWriter,PdfFileReader reader = PdfFileReader(open('files/学习路线图水印.pdf','rb')) writer = PdfFileWriter() # writer.addPage(reader.getPage(0)) # writer.addBlankPage(400,600) nums = reader.getNumPages() for x in range(1,nums): writer.addPage(reader.getPage(x)) writer.write(open('files/new.pdf','wb')) from PyPDF2 import PdfFileWriter,PdfFileReader reader1 = PdfFileReader(open('files/学习路线图水印.pdf','rb')) reader2 = PdfFileReader(open('files/存储引擎的讲解.pdf','rb')) writer = PdfFileWriter() for index in range(reader1.getNumPages()): writer.addPage(reader1.getPage(index)) for index in range(reader2.getNumPages()): writer.addPage(reader2.getPage(index)) writer.write(open('files/合并.pdf','wb'))
03 . 页面相关操作
-
旋转 - 返回值和原页面都是旋转后的页面
页对象 . rotateClockwise(旋转角度)
from PyPDF2 import PdfFileReader,PdfFileWriter reader1 = PdfFileReader(open('files/存储引擎的讲解.pdf','rb')) reader2 = PdfFileReader(open('files/学习路线图水印.pdf','rb')) writer = PdfFileWriter() page = reader1.getPage(0) new_page = page.rotateClockwise(90) writer.write(open('files/页面操作.pdf','wb'))
-
缩放
from PyPDF2 import PdfFileReader,PdfFileWriter reader1 = PdfFileReader(open('files/存储引擎的讲解.pdf','rb')) reader2 = PdfFileReader(open('files/学习路线图水印.pdf','rb')) writer = PdfFileWriter() page = reader1.getPage(1) page.scale(200,400) writer.addPage(page)
-
合并(添加水印)
from PyPDF2 import PdfFileReader,PdfFileWriter reader1 = PdfFileReader(open('files/存储引擎的讲解.pdf','rb')) reader2 = PdfFileReader(open('files/学习路线图水印.pdf','rb')) writer = PdfFileWriter() for index in range(reader1.getNumPages()): page1 = reader1.getPage(index) page2 = reader2.getPage(0) page1.mergePage(page2) writer.addPage((page1)) writer.write(open('files/页面操作.pdf','wb'))
04 . 创建水印文件
-
导入
-
导入创建空的pdf文件的类
from reportlab.pdfgen.canvas import Canvas
-
导入注册字体的工具
from reportlab.pdfbase.pdfmetrics import registerFont
-
导入字体类
from reportlab.pdfbase.ttfonts import TTFont
-
-
创建空的pdf文件
pdf = Canvas('files/water.pdf')
-
添加文字内容
-
设置字体
-
注册字体文件(ttf文件)
registerFont(TTFont('F1', 'files/cc.ttf')) registerFont(TTFont('F2', 'files/dd.ttf')) pdf.setFont('F2', 30) pdf.setFillColorRGB(0.4, 0.4, 0.4, 0.6) pdf.drawString(450, 300, '你好吗?')
-
设置pdf文件的字体(可以反复设置) - 文件对象.setFont(字体名, 字体大小)
pdf.setFont('F1', 40)
-
-
设置字体颜色(可以反复设置)
RGB颜色(计算机三原色) - R->red、G->green、B->blue 标准值是0~255 (这儿是0~1)
文件对象.setFillColorRGB(r, g, b, alpha)
pdf.setFillColorRGB(1, 0, 0, 0.5)
-
-
旋转
pdf.rotate(45) pdf.drawString(300, 100, '你好吗?')
-
添加图片
pdf.drawImage('files/apple.png', 300, 120)
-
保存
pdf.save()