Check a dataset before analysis
Find missing values, inconsistent formats, duplicates, and questions that could invalidate results.
1,323,950 AI resources indexedWorking toward the world’s largest AI resource index.
Verify PDF page count and content using command-line tools when Python libraries unavailable
---
name: pdf-verification-cli-d9258a8527fb
description: Verify PDF page count and content using command-line tools when Python libraries unavailable
---
# PDF Verification with Command-Line Tools
When verifying PDF files during task execution, Python libraries like PyPDF2 may not be available in the environment. This skill provides a reliable alternative using standard command-line tools from the `poppler-utils` package.
## When to Use This Skill
- Need to verify PDF page count
- Need to inspect PDF text content
- PyPDF2 or similar Python PDF libraries are unavailable
- Working in minimal/containerized environments
## Core Tools
### 1. `pdfinfo` - Extract PDF Metadata
Use `pdfinfo` to get page count and other metadata:
```bash
# Get full PDF info
pdfinfo document.pdf
# Get only page count
pdfinfo document.pdf | grep Pages
# Extract page count as a number
pdfinfo document.pdf | grep Pages | awk '{print $2}'
```
**Key metadata fields:**
- `Pages`: Number of pages in the PDF
- `Title`: Document title
- `Author`: Document author
- `Creator`: Application that created the PDF
- `Producer`: Application that processed the PDF
- `CreationDate`: When the PDF was created
- `ModDate`: Last modification date
### 2. `pdftotext` - Extract Text Content
Use `pdftotext` to inspect the actual content of the PDF:
```bash
# Extract all text to stdout
pdftotext document.pdf -
# Extract text to a file
pdftotext document.pdf output.txt
# Extract text from specific page range
pdftotext -f 1 -l 3 document.pdf output.txt
# Preserve layout (rough formatting)
pdftotext -layout document.pdf output.txt
```
## Verification Workflow
### Step 1: Check Tool Availability
```bash
# Check if tools are installed
which pdfinfo
which pdftotext
# Or test with --help
pdfinfo --help 2>&1 | head -1
```
### Step 2: Install if Needed
```bash
# Debian/Ubuntu
apt-get update && apt-get install -y poppler-utils
# RHEL/CentOS/Fedora
yum install -y poppler-utils
# or
dnf install -y poppler-utils
# macOS (with Homebrew)
brew install poppler
```
### Step 3: Verify PDF Properties
```bash
# Verify page count matches expected
EXPECTED_PAGES=4
ACTUAL_PAGES=$(pdfinfo document.pdf | grep Pages | awk '{print $2}')
if [ "$ACTUAL_PAGES" -eq "$EXPECTED_PAGES" ]; then
echo "✓ Page count verified: $ACTUAL_PAGES pages"
else
echo "✗ Page count mismatch: expected $EXPECTED_PAGES, got $ACTUAL_PAGES"
fi
```
### Step 4: Verify PDF Content
```bash
# Check for required sections/content
pdftotext document.pdf - | grep -i "checklist" && echo "✓ Contains checklist section"
pdftotext document.pdf - | grep -i "references" && echo "✓ Contains references section"
# Count occurrences of key terms
pdftotext document.pdf - | grep -ci "assessment" # Case-insensitive count
```
## Python Integration Example
```python
import subprocess
def get_pdf_page_count(pdf_path):
"""Get page count using pdfinfo"""
result = subprocess.run(
['pdfinfo', pdf_path],
capture_output=True,
text=True
)
for line in result.stdout.split('\n'):
if line.startswith('Pages:'):
return int(line.split(':')[1].strip())
return None
def extract_pdf_text(pdf_path):
"""Extract all text from PDF using pdftotext"""
result = subprocess.run(
['pdftotext', pdf_path, '-'],
capture_output=True,
text=True
)
return result.stdout
def verify_pdf(pdf_path, expected_pages, required_terms):
"""Verify PDF has expected page count and contains required terms"""
# Check page count
pages = get_pdf_page_count(pdf_path)
if pages != expected_pages:
return False, f"Expected {expected_pages} pages, got {pages}"
# Check content
text = extract_pdf_text(pdf_path).lower()
missing = [term for term in required_terms if term.lower() not in text]
if missing:
return False, f"Missing terms: {missing}"
return True, "PDF verification passed"
```
## Common Use Cases
| Task | Command |
|------|---------|
| Count pages | `pdfinfo file.pdf \| grep Pages` |
| Check if PDF has text | `pdftotext file.pdf - \| head -5` |
| Search for keyword | `pdftotext file.pdf - \| grep -i "keyword"` |
| Extract first page | `pdftotext -f 1 -l 1 file.pdf out.txt` |
| Get PDF title | `pdfinfo file.pdf \| grep Title` |
## Troubleshooting
**`pdfinfo: command not found`**
- Install poppler-utils (see Step 2 above)
- Ensure PATH includes the installation directory
**`pdftotext` returns empty output**
- PDF may be image-only (scanned) - requires OCR
- PDF may be encrypted/password-protected
- Try `pdftotext -layout` for better text extraction
**Page count seems wrong**
- Some PDFs have blank pages counted
- Verify with `pdftotext` to see actual content per page
## Best Practices
1. **Always verify both structure and content** - Page count alone doesn't guarantee content quality
2. **Use case-insensitive searches** - Content may vary in capitalization
3. **Handle errors gracefully** - Tools may fail on corrupted or encrypted PDFs
4. **Combine with file existence checks** - Verify PDF exists before running tools---
name: pdf-verification-cli-d9258a8527fb
description: Verify PDF page count and content using command-line tools when Python libraries unavailable
---
# PDF Verification with Command-Line Tools
When verifying PDF files during task execution, Python libraries like PyPDF2 may not be available in the environment. This skill provides a reliable alternative using standard command-line tools from the `poppler-utils` package.
## When to Use This Skill
- Need to verify PDF page count
- Need to inspect PDF text content
- PyPDF2 or similar Python PDF libraries are unavailable
- Working in minimal/containerized environments
## Core Tools
### 1. `pdfinfo` - Extract PDF Metadata
Use `pdfinfo` to get page count and other metadata:
```bash
# Get full PDF info
pdfinfo document.pdf
# Get only page count
pdfinfo document.pdf | grep Pages
# Extract page count as a number
pdfinfo document.pdf | grep Pages | awk '{print $2}'
```
**Key metadata fields:**
- `Pages`: Number of pages in the PDF
- `Title`: Document title
- `Author`: Document author
- `Creator`: Application that created the PDF
- `Producer`: Application that processed the PDF
- `CreationDate`: When the PDF was created
- `ModDate`: Last modification date
### 2. `pdftotext` - Extract Text Content
Use `pdftotext` to inspect the actual content of the PDF:
```bash
# Extract all text to stdout
pdftotext document.pdf -
# Extract text to a file
pdftotext document.pdf output.txt
# Extract text from specific page range
pdftotext -f 1 -l 3 document.pdf output.txt
# Preserve layout (rough formatting)
pdftotext -layout document.pdf output.txt
```
## Verification Workflow
### Step 1: Check Tool Availability
```bash
# Check if tools are installed
which pdfinfo
which pdftotext
# Or test with --help
pdfinfo --help 2>&1 | head -1
```
### Step 2: Install if Needed
```bash
# Debian/Ubuntu
apt-get update && apt-get install -y poppler-utils
# RHEL/CentOS/Fedora
yum install -y poppler-utils
# or
dnf install -y poppler-utils
# macOS (with Homebrew)
brew install poppler
```
### Step 3: Verify PDF Properties
```bash
# Verify page count matches expected
EXPECTED_PAGES=4
ACTUAL_PAGES=$(pdfinfo document.pdf | grep Pages | awk '{print $2}')
if [ "$ACTUAL_PAGES" -eq "$EXPECTED_PAGES" ]; then
echo "✓ Page count verified: $ACTUAL_PAGES pages"
else
echo "✗ Page count mismatch: expected $EXPECTED_PAGES, got $ACTUAL_PAGES"
fi
```
### Step 4: Verify PDF Content
```bash
# Check for required sections/content
pdftotext document.pdf - | grep -i "checklist" && echo "✓ Contains checklist section"
pdftotext document.pdf - | grep -i "references" && echo "✓ Contains references section"
# Count occurrences of key terms
pdftotext document.pdf - | grep -ci "assessment" # Case-insensitive count
```
## Python Integration Example
```python
import subprocess
def get_pdf_page_count(pdf_path):
"""Get page count using pdfinfo"""
result = subprocess.run(
['pdfinfo', pdf_path],
capture_output=True,
text=True
)
for line in result.stdout.split('\n'):
if line.startswith('Pages:'):
return int(line.split(':')[1].strip())
return None
def extract_pdf_text(pdf_path):
"""Extract all text from PDF using pdftotext"""
result = subprocess.run(
['pdftotext', pdf_path, '-'],
capture_output=True,
text=True
)
return result.stdout
def verify_pdf(pdf_path, expected_pages, required_terms):
"""Verify PDF has expected page count and contains required terms"""
# Check page count
pages = get_pdf_page_count(pdf_path)
if pages != expected_pages:
return False, f"Expected {expected_pages} pages, got {pages}"
# Check content
text = extract_pdf_text(pdf_path).lower()
missing = [term for term in required_terms if term.lower() not in text]
if missing:
return False, f"Missing terms: {missing}"
return True, "PDF verification passed"
```
## Common Use Cases
| Task | Command |
|------|---------|
| Count pages | `pdfinfo file.pdf \| grep Pages` |
| Check if PDF has text | `pdftotext file.pdf - \| head -5` |
| Search for keyword | `pdftotext file.pdf - \| grep -i "keyword"` |
| Extract first page | `pdftotext -f 1 -l 1 file.pdf out.txt` |
| Get PDF title | `pdfinfo file.pdf \| grep Title` |
## Troubleshooting
**`pdfinfo: command not found`**
- Install poppler-utils (see Step 2 above)
- Ensure PATH includes the installation directory
**`pdftotext` returns empty output**
- PDF may be image-only (scanned) - requires OCR
- PDF may be encrypted/password-protected
- Try `pdftotext -layout` for better text extraction
**Page count seems wrong**
- Some PDFs have blank pages counted
- Verify with `pdftotext` to see actual content per page
## Best Practices
1. **Always verify both structure and content** - Page count alone doesn't guarantee content quality
2. **Use case-insensitive searches** - Content may vary in capitalization
3. **Handle errors gracefully** - Tools may fail on corrupted or encrypted PDFs
4. **Combine with file existence checks** - Verify PDF exists before running toolsImported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.