15.如何用ChatGPT 批量给PDF加水印
这是零基础玩ChatGPT+Python——办公自动化的第15节:利用ChatGPT修改Python代码,批量给PDF加水印。
教程目的: 初步掌握用ChatGPT批量操作PDF,节省时间
阅读对象: 需要用ChatGPT提高工作效率、摆脱重复无聊工作、无Python基础、或Python入门者。
文章目录
场景:
日常工作中,会遇到一些要给PDF文件加水印的场景
这些常见、简单的PDF功能,某些软件尽然要开会员才能使用。
有了ChatGPT后,再辅以Python进行PDF操作,不仅速度更快,而且还省钱。
一、软件准备
1.1 ChatGPT账号。
如果没有账号,嫌麻烦,可以在银河录像局的“AI百宝箱”里购买: https://nf.video/yinhe/web?sharedId=127297
也可以自己免费注册: http://yesaiwen.com/chatgpt-plus-register-yourself/
1.2 vscode:免费。 参考安装教程: http://yesaiwen.com/how-to-use-the-python-code-generated-by-chatgpt/
二、素材准备
在下面的这个链接里,找到相应的素材地址,下载并解压:
http://yesaiwen.com/chatgpt-python-resources/
练习素材内容:
3个PDF文件:
下载后,解压,获得文件及文件夹的位置。例如:
文件夹位置::C:\Users\seven2024\Desktop\text
三、操作步骤
安装模块
首先需要在vscode里,安装1个模块。 在vscode的终端里,输入这1个命令,后按回车:
pip install PyPDF2
3.0. 用ChatGPT修改代码
因为这个案例比较麻烦,主要原因是:pyPDF2 这个库有很多更新,ChatGPT的数据截止日期是2021年9月,所以在使用中,会出现很多问题。
为了更简单地实现目的,本小结采取用ChatGPT修改正确的代码方法,来实现。
3.1 生成水印PDF
先要生成一个水印的PDF文件,然后再把这个水印文件,放入PDF里。
参考咒语:
你作为一个Python程序员。根据我的要求,写出相应的代码。 要求:
- 生成1个PDF水印文件,水印文字是“yesaiwen”
- 通过修改下方三重括号里正确的代码来实现。
- 生成的水印文件,保存的位置:
C:\Users\seven2024\Desktop\PDF水印
“””
from reportlab.pdfgen import canvas
from reportlab.lib import pagesizes
from reportlab.lib.units import cm
def create_watermark(watermark_file, word):
myCanvas = canvas.Canvas(watermark_file, pagesizes.A4)
myCanvas.setFont("Times-Roman", 30)
myCanvas.setFillColorRGB(0,0,0)
myCanvas.setFillAlpha(0.1)
myCanvas.rotate(15)
for i in range(3, 30, 9): # 增大i的步长
for j in range(-5, 30, 9): # 增大j的步长
myCanvas.drawString(i*cm, j*cm, word)
myCanvas.save()
return watermark_file
create_watermark(r"C:\Users\seven2024\Desktop\text\watermark.pdf", "yesaiwen.com")
“””
3.1.1 生成代码
把咒语放到粘贴到ChatGPT里,生成代码:
3.1.2 在vscode里运行程序:
会生成一个水印文件。
获取水印文件的地址:C:\Users\seven2024\Desktop\PDF水印\watermark.pdf
3.2 为文件夹里的PDF文件,添加水印
参考咒语: (水印文件和保存PDF文件的文件夹地址,需要改变)
你作为一个Python程序员。根据我的要求,写出相应的代码。 要求:
- 把文件夹里所有的PDF件,每一页都加上水印
- 通过修改下方三重括号里正确的代码来实现。
- 文件夹的位置:
C:\Users\seven2024\Desktop\PDF水印
- 水印文件位置:
C:\Users\seven2024\Desktop\PDF水印\watermark.pdf
“””
import os
from PyPDF2 import PdfWriter, PdfReader
def add_watermark(input_pdf_path, output_pdf_path, watermark_pdf_path):
watermark = PdfReader(watermark_pdf_path).pages[0]
pdf = PdfReader(input_pdf_path)
pdf_writer = PdfWriter()
for page in pdf.pages:
page.merge_page(watermark)
pdf_writer.add_page(page)
with open(output_pdf_path, 'wb') as fh:
pdf_writer.write(fh)
# 指定包含PDF文件的目录
folder = r'C:\Users\seven2024\Desktop\text'
# 指定水印文件的路径
watermark_file = r'C:\Users\seven2024\Desktop\text\watermark.pdf'
for filename in os.listdir(folder):
if filename.endswith('.pdf'):
file_path = os.path.join(folder, filename)
# 检查文件是否是水印文件,如果是,跳过
if file_path == watermark_file:
continue
# 在每个PDF文件的名字前添加 "watermarked_"
output_path = os.path.join(folder, 'watermarked_' + filename)
add_watermark(file_path, output_path, watermark_file)
“””
3.2.1 生成代码
把咒语放到粘贴到ChatGPT里,生成代码:
3.2.2 在vscode里运行程序:
3.2.3 最终效果
PDF文件的每一页,都打上了水印。
四、出现的问题
4.1 ChatGPT未更新相应的Python库
可能会出现的问题:PyPDF2 已经更新了,但是ChatGPT里的数据还没有更新。 经常会报下面的这个错:
DeprecationError: PdfFileReader is deprecated and was removed in PyPDF2 3.0.0. Use PdfReader instead.。
解决方法是:
把这个报错扔给ChatGPT,它会修改代码。 一般修改一次,问题就可以解决。
4.2 水印文字只能是英文
目前,这个版本的水印文字只能是英文字符。 中文字符会报错。 想让中文字符正确显示,还需要继续折腾一下。
五、学习小结
经过今天的折腾,想起了之前网络上叫嚣的“ChatGPT会代替程序员”,不禁笑了笑:目前看是不可能代替程序员。 有一个原因:程序相关的工具,也在更新,而ChatGPT的数据截止日期是2021年9月,跟不上时代。
不过它作为一个学习助手,非常好用。什么问题,它都能给你解答。对小白入门,非常友好。
今天发现用ChatGPT修改代码贼快,贼好用。
发表评论