Pdftk Server
GitHubOfficialFirst committed by jhaugaDistributed by GitHub
- Skill
- Tool integration
- Automation and integrations
- MIT
- Low risk
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
Download the skill as a ZIP:
https://autogineer.com/agent-skills/github/pdftk-server/downloadUnzip 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.ServermacOS:
brew install pdftk-javaLinux (Debian/Ubuntu):
sudo apt-get install pdftkLinux (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.pdfUsing handles for more control:
pdftk A=file1.pdf B=file2.pdf cat A B output merged.pdfSplit a PDF into Individual Pages
pdftk input.pdf burstExtract Specific Pages
Extract pages 1-5 and 10-15:
pdftk input.pdf cat 1-5 10-15 output extracted.pdfRemove Specific Pages
Remove page 13:
pdftk input.pdf cat 1-12 14-end output output.pdfRotate Pages
Rotate all pages 90 degrees clockwise:
pdftk input.pdf cat 1-endeast output rotated.pdfEncrypt 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 userpassDecrypt a PDF
Remove encryption using the known password:
pdftk secured.pdf input_pw mypassword output unsecured.pdfFill 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 flattenApply 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.pdfStamp an Overlay
Place a single-page PDF on top of every page of the input:
pdftk input.pdf stamp overlay.pdf output stamped.pdfExtract Metadata
Export bookmarks, page metrics, and document information:
pdftk input.pdf dump_data output metadata.txtRepair a Corrupted PDF
Pass a broken PDF through pdftk to attempt automatic repair:
pdftk broken.pdf output fixed.pdfCollate Scanned Pages
Interleave separately scanned even and odd pages:
pdftk A=even.pdf B=odd.pdf shuffle A B output collated.pdfTroubleshooting
| Issue | Solution |
|---|---|
pdftk command not found | Verify installation; check that pdftk is in your system PATH |
| Cannot decrypt PDF | Ensure you are providing the correct owner or user password via input_pw |
| Output file is empty or corrupt | Check input file integrity; try running pdftk input.pdf output repaired.pdf first |
| Form fields not visible after fill | Use the flatten flag to merge fields into the page content |
| Watermark not appearing | Ensure the input PDF has transparent regions; use stamp for opaque overlays |
| Permission denied errors | Check file permissions on input and output paths |
References
Bundled reference documents in the references/ folder:
pdftk-man-page.md - Complete manual reference with all operations, options, and syntax
pdftk-cli-examples.md - Practical command-line examples for common tasks
download.md - Installation and download instructions for all platforms
pdftk-server-license.md - PDFtk Server licensing information
third-party-materials.md - Third-party library licenses
Files
- ATTRIBUTION.mdAdded by AutoGineer853 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md4.6 KiB
- references/download.md3.2 KiB
- references/pdftk-cli-examples.md3.3 KiB
- references/pdftk-man-page.md6.9 KiB
- references/pdftk-server-license.md1.5 KiB
- references/third-party-materials.md9.0 KiB
references/pdftk-man-page.md
PDFtk Server Manual Reference
pdftkversion 2.02Check version history for changes
See server manual for the latest documentation
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.pdfInput 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.pdfCore 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.pdfshuffle - 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.pdfburst - 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.pdfrotate - 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.pdfgenerate_fdf - Extract Form Data
Creates an FDF file from a PDF form, capturing current field values.
pdftk form.pdf generate_fdf output form_data.fdffill_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 flattenbackground - 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.pdfmultibackground - 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.pdfstamp - 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.pdfmultistamp - 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.pdfdump_data - Export Metadata
Outputs PDF metadata, bookmarks, and page metrics to a text file.
pdftk input.pdf dump_data output metadata.txtdump_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.txtdump_data_fields - Extract Form Field Info
Reports form field information including type, name, and values.
pdftk form.pdf dump_data_fields output fields.txtdump_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.txtupdate_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.pdfupdate_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.pdfunpack_files - Extract Attachments
Extracts file attachments from a PDF.
pdftk input.pdf unpack_files output /path/to/output/Output Options
| Option | Description |
|---|---|
output <filename> | Specify output file. Use - for stdout or PROMPT for interactive. |
encrypt_40bit | Apply 40-bit RC4 encryption |
encrypt_128bit | Apply 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) |
compress | Compress page streams |
uncompress | Decompress page streams (useful for debugging) |
flatten | Flatten form fields into page content |
need_appearances | Signal viewer to regenerate field appearances |
keep_first_id | Preserve document ID from first input |
keep_final_id | Preserve document ID from last input |
drop_xfa | Remove XFA form data |
verbose | Enable detailed operation output |
dont_ask | Suppress interactive prompts |
do_ask | Enable interactive prompts |
Permissions
Use with the allow keyword when encrypting. Available permissions:
| Permission | Description |
|---|---|
Printing | Allow high-quality printing |
DegradedPrinting | Allow low-quality printing |
ModifyContents | Allow content modification |
Assembly | Allow document assembly |
CopyContents | Allow content copying |
ScreenReaders | Allow screen reader access |
ModifyAnnotations | Allow annotation modification |
FillIn | Allow form fill-in |
AllFeatures | Grant all permissions |
Key Notes
Page numbers are one-based; use the
endkeyword for the final pageHandles are optional when working with a single PDF
Filter mode (no operation specified) applies output options without restructuring
Reverse page references use the
rprefix (e.g.,r1= last page,r2= second-to-last)The
backgroundoperation requires a transparent input; usestampfor opaque overlay PDFsOutput 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
jhauga
- 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