Help users complete various PDF operations: merge, split, encrypt, add watermarks, extract text, convert formats.
Use Cases
- User says "merge these 5 PDFs into one" "split pages 3-10 of this PDF"
- User says "add a password to the PDF" "add a watermark"
- User says "extract the text from the PDF" "convert PDF to Word"
Dependency Installation
Automatically installed on first use:
pip install pypdf reportlab
Execution Method
Process PDFs via Python scripts using pypdf and reportlab.
Merge PDFs
from pypdf import PdfWriter
writer = PdfWriter()
for pdf_path in ["/path/to/1.pdf", "/path/to/2.pdf", "/path/to/3.pdf"]:
writer.append(pdf_path)
writer.write("/path/to/merged.pdf")
writer.close()
print("合并完成")
Split PDF
from pypdf import PdfReader, PdfWriter
reader = PdfReader("/path/to/input.pdf")
writer = PdfWriter()
# 提取第 3-10 页(0-indexed)
for page_num in range(2, 10):
writer.add_page(reader.pages[page_num])
writer.write("/path/to/extracted.pdf")
writer.close()
Encrypt PDF
from pypdf import PdfReader, PdfWriter
reader = PdfReader("/path/to/input.pdf")
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
writer.encrypt("user_password")
writer.write("/path/to/encrypted.pdf")
writer.close()
Add Text Watermark
from pypdf import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
import io
# 创建水印 PDF
packet = io.BytesIO()
c = canvas.Canvas(packet, pagesize=A4)
c.setFont("Helvetica", 40)
c.setFillAlpha(0.3)
c.saveState()
c.translate(300, 400)
c.rotate(45)
c.drawCentredString(0, 0, "CONFIDENTIAL")
c.restoreState()
c.save()
packet.seek(0)
# 叠加水印
watermark = PdfReader(packet)
reader = PdfReader("/path/to/input.pdf")
writer = PdfWriter()
for page in reader.pages:
page.merge_page(watermark.pages[0])
writer.add_page(page)
writer.write("/path/to/watermarked.pdf")
Extract Text
from pypdf import PdfReader
reader = PdfReader("/path/to/input.pdf")
text = ""
for page in reader.pages:
text += page.extract_text() + "\n"
print(f"共 {len(reader.pages)} 页,提取文本 {len(text)} 字符")
Security Rules
- Confirm password for encryption operations: Remind users to remember the password; encrypted PDFs cannot be recovered
- Confirm order before merging: List the file order for the user to confirm
- Do not overwrite original files: Output to a new file, keep the original PDF
Output Specifications
- After the operation is complete, report: file path, page count, file size
- Before merging/splitting, display the file list and page range
- After encryption, remind the user to remember the password