AI agent skill · by @HKUDS
Pdf Verification Check 112b09
Verify generated PDF files using PyPDF2 to check page counts and integrity
Archived 2026-10-23 · Source updated 2026-08-12 · License: MIT. Check the original repository for the latest version.
SKILL.md instructions
# PDF Verification Check
After generating PDF files, always programmatically verify their structure and integrity before declaring task completion. This catches formatting errors, incorrect page counts, and corrupted files early.
## When to Use
Use this skill whenever your task involves:
- Generating PDF documents
- Creating PDFs with specific page count requirements
- Producing multi-part PDF outputs (e.g., listings + maps)
## Verification Steps
### 1. Install PyPDF2 (if not available)
```bash
pip install PyPDF2
```
### 2. Verify PDF Page Count and Integrity
Create a verification script or run inline Python:
```python
from PyPDF2 import PdfReader
import os
def verify_pdf(pdf_path, expected_pages=None):
"""Verify PDF file exists, is readable, and has expected page count."""
try:
# Check file exists
if not os.path.exists(pdf_path):
return False, f"File not found: {pdf_path}"
# Check file size (non-empty)
file_size = os.path.getsize(pdf_path)
if file_size == 0:
return False, f"Empty file: {pdf_path}"
# Open and verify PDF structure
reader = PdfReader(pdf_path)
actual_pages = len(reader.pages)
# Check page count if expected
if expected_pages is not None and actual_pages != expected_pages:
return False, f"Expected {expected_pages} pages, got {actual_pages}"
return True, f"Valid PDF with {actual_pages} page(s)"
except Exception as e:
return False, f"PDF verification failed: {str(e)}"
# Example usage
pdf_files = [
("listings.pdf", 2),
("map.pdf", 1),
]
all_valid = True
for pdf_path, expected in pdf_files:
valid, message = verify_pdf(pdf_path, expected)
print(f"{pdf_path}: {'✓' if valid else '✗'} {message}")
if not valid:
all_valid = False
if not all_valid:
raise Exception("PDF verification failed - review and regenerate")
```
### 3. Use run_shell for Verification
Execute the verification using `run_shell`:
```bash
python -c "
from PyPDF2 import PdfReader
import sys
pdf_path = 'output.pdf'
expected = 2
try:
reader = PdfReader(pdf_path)
actual = len(reader.pages)
if actual != expected:
print(f'ERROR: Expected {expected} pages, got {actual}')
sys.exit(1)
print(f'OK: {pdf_path} has {actual} page(s)')
except Exception as e:
print(f'ERROR: {e}')
sys.exit(1)
"
```
### 4. Verify Before Completion
**Critical:** Only mark your task as complete after ALL PDF verification checks pass. If verification fails:
1. Examine the error message
2. Regenerate the PDF with corrected formatting
3. Re-run verification
4. Repeat until all checks pass
## Common Issues Caught
- Wrong page counts (e.g., content spilling to extra pages)
- Empty or corrupted PDF files
- PDFs that fail to open properly
- Missing expected sections due to formatting errors
## Example Workflow
```python
# 1. Generate PDF
generate_pdf("listings.pdf", content)
# 2. Verify before completion
valid, msg = verify_pdf("listings.pdf", expected_pages=2)
if not valid:
# Fix and regenerate
regenerate_pdf("listings.pdf", corrected_content)
valid, msg = verify_pdf("listings.pdf", expected_pages=2)
# 3. Only complete if verification passes
assert valid, f"Cannot complete: {msg}"
```