您的位置:首页 > 健康 > 美食 > 重庆市工程招标信息网_南部县人民医院地址_如何做网站的教程_北京企业网站推广哪家公司好

重庆市工程招标信息网_南部县人民医院地址_如何做网站的教程_北京企业网站推广哪家公司好

2024/10/5 23:22:14 来源:https://blog.csdn.net/WwLK123/article/details/142536186  浏览:    关键词:重庆市工程招标信息网_南部县人民医院地址_如何做网站的教程_北京企业网站推广哪家公司好
重庆市工程招标信息网_南部县人民医院地址_如何做网站的教程_北京企业网站推广哪家公司好

1.4 PDF文档水印添加

【1】安装库

pip install reportlab
pip install PyPDF2

【2】代码

import iofrom PyPDF2 import PdfWriter, PdfReader
from reportlab.lib import pagesizes  # 页面样式
from reportlab.lib.units import cm
from reportlab.pdfbase import pdfmetrics  # 注册字体
from reportlab.pdfbase.ttfonts import TTFont  # 字体类
from reportlab.pdfgen import canvaspdfmetrics.registerFont(TTFont('SimHei', 'SimHei.ttf'))# 生成水印文件
def create_water_mark(text):packet = io.BytesIO()# 创建一个带有水印的新PDF页my_canvas = canvas.Canvas(packet, pagesizes.A4)# 设置水印字体my_canvas.setFont("SimHei", 40)# 填充色my_canvas.setFillColorRGB(0, 0, 0)# 透明度my_canvas.setFillAlpha(0.1)# 设置字体旋转度数my_canvas.rotate(15)# x轴的3cm处,到24结束,步长是10for i in range(3, 24, 10):# y轴的for j in range(-5, 30, 5):my_canvas.drawString(i * cm, j * cm, text)my_canvas.save()packet.seek(0)return PdfReader(packet)def add_watermark(input_pdf_path, output_pdf_path, watermark_text):# 创建水印watermark = create_water_mark(watermark_text)# 读取输入 PDFpdf_reader = PdfReader(input_pdf_path)pdf_writer = PdfWriter()# 遍历每一页,将水印添加到每一页for page in pdf_reader.pages:page.merge_page(watermark.pages[0])  # 将水印添加到当前页面pdf_writer.add_page(page)# 写入到输出 PDF 文件with open(output_pdf_path, "wb") as output_pdf:pdf_writer.write(output_pdf)if __name__ == '__main__':# 示例使用input_pdf = "./file/test.pdf"  # 输入的 PDF 文件路径output_pdf = "output_with_watermark.pdf"  # 输出的 PDF 文件路径watermark_text = "不写八个"  # 水印文本add_watermark(input_pdf, output_pdf, watermark_text)

【3】代码解释

  1. create_watermark:这个函数使用 ReportLab 创建一个包含水印文本的 PDF 文件。水印文本的位置和字体大小可以根据需要调整。
  2. add_watermark:该函数读取输入的 PDF 文件,并将水印应用到每一页。最后,生成的新 PDF 文件将保存到指定的输出路径。
  3. 通过设置 input_pdf, output_pdfwatermark_text,你可以轻松地将水印添加到任何 PDF 文件。

【4】生成效果

在这里插入图片描述

版权声明:

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

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