Generated banner for Pdftk Server
Generated logo for Pdftk Server

Pdftk Server

GitHubOfficialFirst committed by jhaugaDistributed by GitHub

  • Skill
  • Tool integration
  • Automation and integrations
  • MIT
  • Low risk

From the author

Skill for using the command-line tool pdftk (PDFtk Server) for working with PDF files. Use when asked to merge PDFs, split PDFs, rotate pages, encrypt or decrypt PDFs, fill PDF forms, apply watermarks, stamp overlays, extract metadata, burst documents into pages, repair corrupted PDFs, attach or extract files, or perform any PDF manipulation from the command line.
— the description by jhauga

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

PDFtk Server is a powerful command-line utility designed for programmatic PDF document manipulation. It provides a robust set of operations for handling PDF files, including merging, splitting, rotating, and encrypting documents. It also supports advanced features like filling PDF forms, applying watermarks or stamps, extracting metadata, and repairing corrupted files. This tool is ideal for users who need to automate document processing tasks directly from a terminal or within scripts.

What it does

  • Merges multiple PDF files into a single document
  • Splits or bursts PDF files into individual pages
  • Encrypts and decrypts PDF files with password protection
  • Fills PDF form fields using FDF or XFDF data
  • Applies background watermarks or foreground stamps to pages
  • Extracts metadata, bookmarks, and embedded file attachments

When to use it

  • When you need to automate PDF processing tasks via command-line scripts
  • When performing batch operations on large numbers of PDF files
  • When you need to secure sensitive documents with password encryption
  • When preparing documents by merging, rotating, or removing specific pages
  • When extracting data or attachments from existing PDF files

Advantages

  • Enables automation of repetitive PDF tasks
  • Supports complex operations like form flattening and page collation
  • Lightweight command-line interface suitable for server environments
  • Provides granular control over PDF structure and security

Usage examples

“How do I merge three PDF files into one using PDFtk?”
The agent provides the command: pdftk file1.pdf file2.pdf file3.pdf cat output merged.pdf.
“I need to password protect a PDF file, how can I do that?”
The agent provides the command: pdftk input.pdf output secured.pdf owner_pw mypassword user_pw userpass.
“How can I split a PDF into individual pages?”
The agent provides the command: pdftk input.pdf burst.
“How do I fill a PDF form and make it non-editable?”
The agent provides the command: pdftk form.pdf fill_form data.fdf output filled.pdf flatten.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/github/pdftk-server/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip pdftk-server.zip -d .agents/skills

Documentation by jhauga

PDFtk Server

PDFtk Server is a command-line tool for working with PDF documents. It can merge, split, rotate, encrypt, decrypt, watermark, stamp, fill forms, extract metadata, and manipulate PDFs in a variety of ways.

When to Use This Skill

  • Merging or joining multiple PDF files into one

  • Splitting or bursting a PDF into individual pages

  • Rotating PDF pages

  • Encrypting or decrypting PDF files

  • Filling PDF form fields from FDF/XFDF data

  • Applying background watermarks or foreground stamps

  • Extracting PDF metadata, bookmarks, or form field information

  • Repairing corrupted PDF files

  • Attaching or extracting files embedded in PDFs

  • Removing specific pages from a PDF

  • Collating separately scanned even/odd pages

  • Compressing or decompressing PDF page streams

Prerequisites

  • PDFtk Server must be installed on the system

    • Windows: winget install --id PDFLabs.PDFtk.Server

    • macOS: brew install pdftk-java

    • Linux (Debian/Ubuntu): sudo apt-get install pdftk

    • Linux (Red Hat/Fedora): sudo dnf install pdftk

  • Access to a terminal or command prompt

  • Verify installation by running pdftk --version

Step-by-Step Workflows

Merge Multiple PDFs
pdftk file1.pdf file2.pdf cat output merged.pdf

Using handles for more control:

pdftk A=file1.pdf B=file2.pdf cat A B output merged.pdf
Split a PDF into Individual Pages
pdftk input.pdf burst
Extract Specific Pages

Extract pages 1-5 and 10-15:

pdftk input.pdf cat 1-5 10-15 output extracted.pdf
Remove Specific Pages

Remove page 13:

pdftk input.pdf cat 1-12 14-end output output.pdf
Rotate Pages

Rotate all pages 90 degrees clockwise:

pdftk input.pdf cat 1-endeast output rotated.pdf
Encrypt a PDF

Set an owner password and a user password with 128-bit encryption (default):

pdftk input.pdf output secured.pdf owner_pw mypassword user_pw userpass
Decrypt a PDF

Remove encryption using the known password:

pdftk secured.pdf input_pw mypassword output unsecured.pdf
Fill a PDF Form

Populate form fields from an FDF file and flatten to prevent further edits:

pdftk form.pdf fill_form data.fdf output filled.pdf flatten
Apply a Background Watermark

Place a single-page PDF behind every page of the input (input should have transparency):

pdftk input.pdf background watermark.pdf output watermarked.pdf
Stamp an Overlay

Place a single-page PDF on top of every page of the input:

pdftk input.pdf stamp overlay.pdf output stamped.pdf
Extract Metadata

Export bookmarks, page metrics, and document information:

pdftk input.pdf dump_data output metadata.txt
Repair a Corrupted PDF

Pass a broken PDF through pdftk to attempt automatic repair:

pdftk broken.pdf output fixed.pdf
Collate Scanned Pages

Interleave separately scanned even and odd pages:

pdftk A=even.pdf B=odd.pdf shuffle A B output collated.pdf

Troubleshooting

IssueSolution
pdftk command not foundVerify installation; check that pdftk is in your system PATH
Cannot decrypt PDFEnsure you are providing the correct owner or user password via input_pw
Output file is empty or corruptCheck input file integrity; try running pdftk input.pdf output repaired.pdf first
Form fields not visible after fillUse the flatten flag to merge fields into the page content
Watermark not appearingEnsure the input PDF has transparent regions; use stamp for opaque overlays
Permission denied errorsCheck file permissions on input and output paths

References

Bundled reference documents in the references/ folder:

Files

references/pdftk-man-page.md

PDFtk Server Manual Reference

Overview

PDFtk is a command-line utility for manipulating PDF documents. It enables operations including merging, splitting, rotating, encrypting, decrypting, watermarking, form-filling, and metadata extraction of PDF files.

Synopsis

pdftk [input PDF files | - | PROMPT]
      [input_pw <passwords>]
      [<operation>] [<operation arguments>]
      [output <filename | - | PROMPT>]
      [encrypt_40bit | encrypt_128bit]
      [allow <permissions>]
      [owner_pw <password>] [user_pw <password>]
      [compress | uncompress]
      [flatten] [need_appearances]
      [verbose] [dont_ask | do_ask]

Input Options

Input PDF Files: Specify one or more PDFs. Use - for stdin or PROMPT for interactive input. Files may be assigned handles (single uppercase letters) for reference in operations:

pdftk A=file1.pdf B=file2.pdf cat A B output merged.pdf

Input Passwords (input_pw): For encrypted PDFs, provide owner or user passwords associated with file handles or by input order:

pdftk A=secured.pdf input_pw A=foopass cat output unsecured.pdf

Core Operations

cat - Concatenate and Compose

Merge, split, or reorder pages with optional rotation. Supports page ranges, reverse ordering (prefix r), page qualifiers (even/odd), and rotation (compass directions north, south, east, west, left, right, down).

Page range syntax: [handle][begin[-end[qualifier]]][rotation]

pdftk A=in1.pdf B=in2.pdf cat A1-7 B1-5 A8 output combined.pdf
shuffle - Collate Pages

Takes one page from each input range in turn, producing an interleaved result. Useful for collating separately scanned odd and even pages.

pdftk A=even.pdf B=odd.pdf shuffle A B output collated.pdf
burst - Split into Individual Pages

Splits a single PDF into one file per page. Output files are named using printf-style formatting (default: pg_%04d.pdf).

pdftk input.pdf burst output page_%02d.pdf
rotate - Rotate Pages

Rotates specified pages while maintaining document order. Uses the same page range syntax as cat.

pdftk in.pdf cat 1-endeast output rotated.pdf
generate_fdf - Extract Form Data

Creates an FDF file from a PDF form, capturing current field values.

pdftk form.pdf generate_fdf output form_data.fdf
fill_form - Populate Form Fields

Fills PDF form fields from an FDF or XFDF data file.

pdftk form.pdf fill_form data.fdf output filled.pdf flatten
background - Apply Watermark Behind Content

Applies a single-page PDF as a background (watermark) behind every page of the input. The input PDF should have a transparent background for best results.

pdftk input.pdf background watermark.pdf output watermarked.pdf
multibackground - Apply Multi-Page Watermark

Like background, but applies corresponding pages from the background PDF to matching pages in the input.

pdftk input.pdf multibackground watermarks.pdf output watermarked.pdf
stamp - Overlay on Top of Content

Stamps a single-page PDF on top of every page of the input. Use this instead of background when the overlay PDF is opaque or has no transparency.

pdftk input.pdf stamp overlay.pdf output stamped.pdf
multistamp - Multi-Page Overlay

Like stamp, but applies corresponding pages from the stamp PDF to matching pages in the input.

pdftk input.pdf multistamp overlays.pdf output stamped.pdf
dump_data - Export Metadata

Outputs PDF metadata, bookmarks, and page metrics to a text file.

pdftk input.pdf dump_data output metadata.txt
dump_data_utf8 - Export Metadata (UTF-8)

Same as dump_data, but outputs UTF-8 encoded text.

pdftk input.pdf dump_data_utf8 output metadata_utf8.txt
dump_data_fields - Extract Form Field Info

Reports form field information including type, name, and values.

pdftk form.pdf dump_data_fields output fields.txt
dump_data_fields_utf8 - Extract Form Field Info (UTF-8)

Same as dump_data_fields, but outputs UTF-8 encoded text.

dump_data_annots - Extract Annotations

Reports PDF annotation information.

pdftk input.pdf dump_data_annots output annots.txt
update_info - Modify Metadata

Updates PDF metadata and bookmarks from a text file (same format as dump_data output).

pdftk input.pdf update_info metadata.txt output updated.pdf
update_info_utf8 - Modify Metadata (UTF-8)

Same as update_info, but expects UTF-8 encoded input.

attach_files - Embed Files

Attaches files to a PDF, optionally at a specific page.

pdftk input.pdf attach_files table.html graph.png to_page 6 output output.pdf
unpack_files - Extract Attachments

Extracts file attachments from a PDF.

pdftk input.pdf unpack_files output /path/to/output/

Output Options

OptionDescription
output <filename>Specify output file. Use - for stdout or PROMPT for interactive.
encrypt_40bitApply 40-bit RC4 encryption
encrypt_128bitApply 128-bit RC4 encryption (default when password set)
owner_pw <password>Set the owner password
user_pw <password>Set the user password
allow <permissions>Grant specific permissions (see below)
compressCompress page streams
uncompressDecompress page streams (useful for debugging)
flattenFlatten form fields into page content
need_appearancesSignal viewer to regenerate field appearances
keep_first_idPreserve document ID from first input
keep_final_idPreserve document ID from last input
drop_xfaRemove XFA form data
verboseEnable detailed operation output
dont_askSuppress interactive prompts
do_askEnable interactive prompts

Permissions

Use with the allow keyword when encrypting. Available permissions:

PermissionDescription
PrintingAllow high-quality printing
DegradedPrintingAllow low-quality printing
ModifyContentsAllow content modification
AssemblyAllow document assembly
CopyContentsAllow content copying
ScreenReadersAllow screen reader access
ModifyAnnotationsAllow annotation modification
FillInAllow form fill-in
AllFeaturesGrant all permissions

Key Notes

  • Page numbers are one-based; use the end keyword for the final page

  • Handles are optional when working with a single PDF

  • Filter mode (no operation specified) applies output options without restructuring

  • Reverse page references use the r prefix (e.g., r1 = last page, r2 = second-to-last)

  • The background operation requires a transparent input; use stamp for opaque overlay PDFs

  • Output filename cannot match any input filename

Requirements and compatibility

Written for: GitHub Copilot

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

What our scanner noticed· Low risk

  • Instructions that use the network

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

First committed by
GitHub avatar of jhaugajhauga
Publisher
GitHub (Official)
Distributed by
GitHub
Source
github/awesome-copilot · skills/pdftk-server · commit 797337f
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Contributors
jhauga

AutoGineer is not affiliated with or endorsed by jhauga or GitHub.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download pdftk-server.zip