SuperAPI AI Directory

pdf-toolkit

Office & productivity

View repository

Updated 10-16 00:04

About this skill

PDF Toolbox

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