from pathlib import Path
from typing import Union, Literal, List
from pypdf import PdfWriter, PdfReader, Transformation
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4
import csv
import sys
def makeWatermark(text, output_file_name, font="Helvetica", font_size=50, alpha_degree=0.25, rotate=45, delta_x=200, delta_y=100):
pdf = canvas.Canvas(output_file_name, pagesize=A4)
pdf.translate(inch, inch)
pdf.setFillColor(colors.grey, alpha=alpha_degree)
pdf.setFont(font, font_size)
pdf.rotate(rotate)
# A4 is 210 * 297
for i in range(0, 2100, delta_x):
for j in range(0, 2970, delta_y):
pdf.drawCentredString(i, j, text)
pdf.save()
def dowatermark(
content_pdf: Path,
stamp_pdf: Path,
pdf_result: Path,
page_indices: Union[Literal["ALL"], List[int]] = "ALL",):
reader = PdfReader(content_pdf)
if page_indices == "ALL":
page_indices = range(len(reader.pages))
writer = PdfWriter()
watermark_page = PdfReader(stamp_pdf).pages[0]
for index in page_indices:
content_page = reader.pages[index]
content_page.merge_transformed_page(
watermark_page,
Transformation(),
)
writer.add_page(content_page)
with open(pdf_result, "wb") as fp:
writer.write(fp)
def read_csv(file_path):
watermarks = []
with open(file_path, newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
watermarks.append(str(row['title']))
return watermarks
if __name__ == "__main__":
print("hello, someone")
print(sys.argv[1:])
input_name = sys.argv[1:][0]
font_name = sys.argv[1:][1]
font_size = float(sys.argv[1:][2])
alpha_degree = float(sys.argv[1:][3])
rotate = float(sys.argv[1:][4])
delta_x = int(sys.argv[1:][5])
delta_y = int(sys.argv[1:][6])
watermarks = read_csv("./test.csv")
print("Support fonts: ", canvas.Canvas(None).getAvailableFonts())
for watermark in watermarks:
tmp = "./" + watermark + ".pdf"
print("processing... ", tmp)
makeWatermark(watermark, "./tmp.pdf", font_name, font_size, alpha_degree, rotate, delta_x, delta_y)
dowatermark("./" + input_name + ".pdf", "./tmp.pdf", tmp)
没有合适的资源?快使用搜索试试~ 我知道了~
Python作业基于python实现PDF自定义添加文字水印源码(可支持图片水印).zip
共2个文件
py:1个
md:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 191 浏览量
2023-12-29
10:05:54
上传
评论
收藏 1KB ZIP 举报
温馨提示
【资源说明】 Python作业基于python实现PDF自定义添加文字水印源码(可支持图片水印).zip Python作业基于python实现PDF自定义添加文字水印源码(可支持图片水印).zip Python作业基于python实现PDF自定义添加文字水印源码(可支持图片水印).zip Python作业基于python实现PDF自定义添加文字水印源码(可支持图片水印).zip Python作业基于python实现PDF自定义添加文字水印源码(可支持图片水印).zipPython作业基于python实现PDF自定义添加文字水印源码(可支持图片水印).zipPython作业基于python实现PDF自定义添加文字水印源码(可支持图片水印).zip Python作业基于python实现PDF自定义添加文字水印源码(可支持图片水印).zip 【备注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!
资源推荐
资源详情
资源评论
收起资源包目录
Python作业基于python实现PDF自定义添加文字水印源码(可支持图片水印).zip (2个子文件)
说明.md 88B
watermark_pdf.py 2KB
共 2 条
- 1
资源评论
北航程序员小C
- 粉丝: 2256
- 资源: 1825
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功