Process PDF files - extract text, read content, create PDFs, merge or split documents. Use when user asks to read, create, or manipulate PDF files.
Source facts
- Repository
- nuoyimanaituling/manus-x
- Last source activity
- January 14, 2026 at 05:54
- Detected SKILL.md language
- English
- Stars
- 830
- Forks
- 9
Install options
The review-first prompt is selected by default. You can switch to a direct command or download a local copy.
Review the source files
Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.
Showing SKILL.md
SKILL.md
Source instructions · Read-only preview- name
- description
- Process PDF files - extract text, read content, create PDFs, merge or split documents. Use when user asks to read, create, or manipulate PDF files.
# PDF Processing Skill
You now have expertise in PDF file processing. Follow these instructions based on the task.
## Reading PDFs
### Using pdftotext (Recommended for text extraction)
```bash
# Install if needed
apt-get install -y poppler-utils
# Extract text from PDF
pdftotext input.pdf output.txt
# Extract specific pages
pdftotext -f 1 -l 5 input.pdf output.txt
# Extract with layout preservation
pdftotext -layout input.pdf output.txt
```
### Using Python PyMuPDF
```python
import fitz # PyMuPDF
# Open and read PDF
doc = fitz.open("input.pdf")
for page_num, page in enumerate(doc):
text = page.get_text()
print(f"--- Page {page_num + 1} ---")
print(text)
# Extract text from specific pages
page = doc[0] # First page (0-indexed)
text = page.get_text()
```
### Using pdfplumber (for tables)
```python
import pdfplumber
with pdfplumber.open("input.pdf") as pdf:
for page in pdf.pages:
# Extract text
text = page.extract_text()
print(text)
# Extract tables
tables = page.extract_tables()
for table in tables:
for row in table:
print(row)
```
## Creating PDFs
### Using Python reportlab
```python
from reportlab.lib.pagesizes import letter, A4
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch
# Create a simple PDF
c = canvas.Canvas("output.pdf", pagesize=letter)
c.setFont("Helvetica", 12)
c.drawString(1*inch, 10*inch, "Hello World")
c.save()
```
### Using Pandoc (from Markdown)
```bash
# Install pandoc if needed
apt-get install -y pandoc texlive-xetex
# Convert Markdown to PDF
pandoc input.md -o output.pdf
# With custom template
pandoc input.md -o output.pdf --template=template.tex
```
### Using weasyprint (from HTML)
```python
from weasyprint import HTML
# From HTML string
html_content = "<h1>Hello World</h1><p>This is a PDF.</p>"
HTML(string=html_content).write_pdf("output.pdf")
# From HTML file
HTML("input.html").write_pdf("output.pdf")
```
## Merging PDFs
```python
import fitz
result = fitz.open()
for pdf_file in ["file1.pdf", "file2.pdf", "file3.pdf"]:
doc = fitz.open(pdf_file)
result.insert_pdf(doc)
result.save("merged.pdf")
```
## Splitting PDFs
```python
import fitz
doc = fitz.open("input.pdf")
# Extract specific pages
output = fitz.open()
output.insert_pdf(doc, from_page=0, to_page=4) # Pages 1-5
output.save("pages_1_to_5.pdf")
# Split into individual pages
for i, page in enumerate(doc):
single_page = fitz.open()
single_page.insert_pdf(doc, from_page=i, to_page=i)
single_page.save(f"page_{i+1}.pdf")
```
## Adding Watermarks
```python
import fitz
doc = fitz.open("input.pdf")
for page in doc:
# Add text watermark
page.insert_text(
(100, 100),
"CONFIDENTIAL",
fontsize=50,
color=(0.8, 0.8, 0.8),
rotate=45
)
doc.save("watermarked.pdf")
```
## Key Libraries
| Library | Use Case | Install |
|---------|----------|---------|
| PyMuPDF (fitz) | Read, write, merge, split | `pip install pymupdf` |
| pdftotext | CLI text extraction | `apt install poppler-utils` |
| pdfplumber | Table extraction | `pip install pdfplumber` |
| reportlab | Create PDFs programmatically | `pip install reportlab` |
| weasyprint | HTML to PDF | `pip install weasyprint` |
| pdf2image | PDF to images | `pip install pdf2image` |
| PyPDF2 | Merge, split, rotate | `pip install pypdf2` |
## Best Practices
1. Always check if required libraries are installed before use
2. For large PDFs, process pages in batches to manage memory
3. When extracting text, verify encoding (UTF-8 is recommended)
4. For table extraction, pdfplumber is more reliable than PyMuPDF
5. Close PDF documents after processing to free resources
View on GitHub