# What Command-Line Tools Are Utilized by the PDF Claude Skill?

> Discover the command-line tools like pdftotext qpdf and pdfimages powering the PDF Claude Skill for efficient text and image extraction merging splitting and rotation.

- Repository: [Composio/awesome-claude-skills](https://github.com/composiohq/awesome-claude-skills)
- Tags: how-to-guide
- Published: 2026-08-29

---

**The PDF Claude Skill relies on four core command-line utilities—`pdftotext` and `pdfimages` from poppler-utils, `qpdf`, and optionally `pdftk`—to power text extraction, image extraction, merging, splitting, and rotation workflows.**

The PDF Claude Skill within the **ComposioHQ/awesome-claude-skills** repository delegates complex document operations to proven open-source CLI tools rather than reimplementing PDF logic from scratch. These utilities are orchestrated through Python helper scripts that invoke commands via `subprocess.run`, feeding extracted data directly to Claude for intelligent analysis.

## Essential Command-Line Tools in the PDF Claude Skill

The skill’s architecture centers on utilities documented in [`document-skills/pdf/SKILL.md`](https://github.com/ComposioHQ/awesome-claude-skills/blob/main/document-skills/pdf/SKILL.md), each serving specialized roles in the PDF processing pipeline.

### pdftotext (poppler-utils)

**`pdftotext`** handles high-fidelity text extraction from PDF documents. According to the source documentation, this tool supports layout preservation and page-specific targeting through command-line flags.

Key capabilities include:
- Extracting plain text while maintaining original layout using the `-layout` flag
- Targeting specific page ranges with `-f` (first page) and `-l` (last page) parameters
- Converting PDF content to machine-readable `.txt` files for downstream NLP processing

### qpdf

**`qpdf`** serves as the primary engine for structural PDF manipulation. The skill utilizes this tool for operations that modify document architecture without altering content semantics.

Supported operations include:
- Merging multiple PDFs via the `--pages` directive
- Splitting documents by specifying page ranges (e.g., `--pages . 1-10`)
- Rotating individual pages using `--rotate=+90:3` syntax (90° clockwise rotation of page 3)
- Removing password protections programmatically

### pdftk (Optional)

**`pdftk`** provides an alternative command syntax for merge, split, and rotation operations when available on the host system. While the skill prioritizes `qpdf` for these tasks, `pdftk` serves as a fallback utility documented in the "Command-Line Tools" section of [`document-skills/pdf/SKILL.md`](https://github.com/ComposioHQ/awesome-claude-skills/blob/main/document-skills/pdf/SKILL.md), ensuring broader compatibility across different Linux distributions and legacy environments.

### pdfimages (poppler-utils)

**`pdfimages`** extracts embedded raster images from PDF files, complementing the text-focused `pdftotext` utility. The skill leverages the `-j` flag to force JPEG output when extracting images, producing discrete image files prefixed with a user-defined string for further computer vision analysis.

## Implementation and Script Integration

The PDF Claude Skill implements these utilities through helper scripts located in `document-skills/pdf/scripts/` (if present), which construct shell commands and capture output via `subprocess.run`. This architecture separates the concerns of document parsing (handled by the compiled C++ binaries of poppler-utils and QPDF) from the Python orchestration logic that manages Claude’s interaction state.

According to the repository structure, the skill’s Python wrappers translate high-level user requests into precise CLI invocations, then pipe stdout results back to Claude’s context window for answer synthesis.

## Practical CLI Usage Examples

Below are the exact command patterns implemented by the PDF Claude Skill, demonstrating how each utility handles specific document processing tasks:

```bash

# Extract text while preserving layout

pdftotext -layout input.pdf output.txt

# Extract text from pages 2-4 only

pdftotext -f 2 -l 4 input.pdf output.txt

# Merge three PDFs into one document

qpdf --empty --pages file1.pdf file2.pdf file3.pdf -- merged.pdf

# Split first ten pages into separate file

qpdf input.pdf --pages . 1-10 -- first_ten.pdf

# Rotate page 3 by 90 degrees clockwise

qpdf input.pdf output_rotated.pdf --rotate=+90:3

# Alternative merge using pdftk (if installed)

pdftk file1.pdf file2.pdf cat output merged_via_pdftk.pdf

# Extract all images as JPEGs

pdfimages -j input.pdf img_prefix

```

## Supporting Documentation and Reference Files

The command-line tool specifications reside within a broader documentation hierarchy that defines the skill’s capabilities:

- **[`document-skills/pdf/SKILL.md`](https://github.com/ComposioHQ/awesome-claude-skills/blob/main/document-skills/pdf/SKILL.md)** – Contains the authoritative list of command-line tools, installation requirements, and basic usage examples for `pdftotext`, `qpdf`, `pdftk`, and `pdfimages`.
- **[`document-skills/pdf/reference.md`](https://github.com/ComposioHQ/awesome-claude-skills/blob/main/document-skills/pdf/reference.md)** – Extends coverage to additional programmatic libraries including `pypdfium2` and `pdf-lib` that complement the CLI tools.
- **[`document-skills/pdf/forms.md`](https://github.com/ComposioHQ/awesome-claude-skills/blob/main/document-skills/pdf/forms.md)** – Details fillable PDF handling, primarily using `pypdf` or `pdf-lib` rather than the command-line utilities.

## Summary

- The PDF Claude Skill utilizes **four primary command-line tools**: `pdftotext` and `pdfimages` from poppler-utils, `qpdf`, and optionally `pdftk`.
- Text extraction relies on **`pdftotext`** with support for layout preservation and page-specific targeting via `-f` and `-l` flags.
- Structural operations (merge, split, rotate) are handled by **`qpdf`**, with **`pdftk`** serving as an alternative when available.
- Image extraction is performed by **`pdfimages`** using the `-j` flag for JPEG output.
- These utilities are documented in **[`document-skills/pdf/SKILL.md`](https://github.com/ComposioHQ/awesome-claude-skills/blob/main/document-skills/pdf/SKILL.md)** and invoked through Python scripts using `subprocess.run`.

## Frequently Asked Questions

### Do I need to install all four tools to use the PDF Claude Skill?

No. While `pdftotext`, `pdfimages`, and `qpdf` are required for full functionality, `pdftk` is listed as optional in the ComposioHQ documentation. The skill gracefully handles missing `pdftk` by defaulting to `qpdf` for merge and split operations, though you must install poppler-utils and qpdf packages for text extraction and structural manipulation to function.

### Are these command-line tools cross-platform compatible?

Yes. The poppler-utils package (containing `pdftotext` and `pdfimages`) and `qpdf` are available for Linux, macOS (via Homebrew), and Windows (via MSYS2 or binary distributions). However, `pdftk` installation varies by platform and may require additional configuration on macOS, which is why the skill treats it as an optional dependency rather than a core requirement.

### How does the skill handle errors from these command-line utilities?

The Python wrapper scripts in `document-skills/pdf/scripts/` capture stderr streams when invoking `subprocess.run`, translating non-zero exit codes from `qpdf` or `pdftotext` into user-friendly error messages. If a PDF is password-protected and no password is provided, the skill receives the CLI error status and prompts the user for credentials before retrying the operation.

### Can I use these commands directly without the Claude Skill interface?

Absolutely. The commands documented in [`document-skills/pdf/SKILL.md`](https://github.com/ComposioHQ/awesome-claude-skills/blob/main/document-skills/pdf/SKILL.md) are standard shell utilities that function independently of the Claude Skill. You can run `pdftotext`, `qpdf`, or `pdfimages` directly in your terminal for batch processing workflows, though you will lose the automated context management and natural language querying capabilities that the skill provides through its Python orchestration layer.