欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > python办公自动化---pdf文件的读取、添加水印

python办公自动化---pdf文件的读取、添加水印

2025/9/25 11:31:06 来源:https://blog.csdn.net/zaxuezhe/article/details/147146450  浏览:    关键词:python办公自动化---pdf文件的读取、添加水印

需要安装包:pdfminer、pypdf2

一、读取pdf中的内容

from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfpage import PDFParser
from io import StringIO# 缓冲区
output_String = StringIO()# 按照二进制的模式读取文件
with open('./dataFile/测试文件转换.pdf', 'rb') as f:# 创建一个解析器对象parser1 = PDFParser(f)# 创建一个文档对象doc = PDFDocument(parser1)# 创建资源管理器对象rm = PDFResourceManager()# 创建设备对象device1 = TextConverter(rm, output_String, laparams=LAParams())# 创建解释器对象,用来处理pdf中每一页中的内容interpreter = PDFPageInterpreter(rm, device1)# 按页循环解析pdf文件for page in PDFPage.create_pages(doc):interpreter.process_page(page)print(output_String.getvalue())

运行结果:

二、pdf添加水印 

 方法一:

from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
import io"""方法一:从包含水印的文件中读取水印"""
waterMark_pdf = PdfReader('./dataFile/带水印的文件.pdf')
# 读取pdf第一页
waterMark = waterMark_pdf.getPage(0)input_pdf = PdfReader("./dataFile/测试文件转换.pdf")
writer = PdfWriter# 将水印加到pdf的每一页
for pageNo in range(input_pdf.getNumPages()):page = input_pdf.getPage(pageNo)page.mergePage(waterMark)# 将添加水印的pdf添加倒写writer.addPage(page)# 将添加完水印的文件写入倒pdf中
with open("./dataFile/生成的水印文件.pdf", "wb") as f:writer.write(f)

方法二:

from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
import iodef create_watermark(watermark_text):"""创建水印PDF"""packet = io.BytesIO()# 创建一个新的PDF with reportlabcan = canvas.Canvas(packet, pagesize=letter)# 设置透明度can.setFillAlpha(0.3)# 设置字体和大小can.setFont("Helvetica", 60)# 获取页面尺寸width, height = letter# 计算水印位置(居中)text_width = can.stringWidth(watermark_text, "Helvetica", 60)x = (width - text_width) / 2y = height / 2# 旋转45度can.rotate(45)# 绘制水印文本(可能需要调整x,y偏移量)can.drawString(300, 100, watermark_text)can.save()# 移动到开始位置packet.seek(0)return PdfReader(packet)def add_watermark(input_pdf, output_pdf, watermark_text="添加水印"):"""为PDF文件添加水印"""# 创建水印watermark = create_watermark(watermark_text)# 读取原始PDFreader = PdfReader(input_pdf)writer = PdfWriter()# 为每一页添加水印for page in reader.pages:# 合并水印和原始页面page.merge_page(watermark.pages[0])writer.add_page(page)# 写入输出文件with open(output_pdf, "wb") as output_file:writer.write(output_file)add_watermark("./dataFile/测试文件转换.pdf", "./dataFile/已添加水印.pdf", "添加水印")
print(f"水印已添加,输出文件为: {'./dataFile/已添加水印.pdf'}")

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词