{"id":35507495,"url":"https://github.com/pdftl/pdftl","last_synced_at":"2026-02-08T15:03:53.467Z","repository":{"id":328296650,"uuid":"1070192329","full_name":"pdftl/pdftl","owner":"pdftl","description":"pdftl: A modern Python-based successor to pdftk. A CLI tool for PDF manipulation, merging, and geometry (crop/chop) powered by pikepdf and qpdf.","archived":false,"fork":false,"pushed_at":"2026-01-28T17:42:34.000Z","size":2506,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-29T08:06:07.083Z","etag":null,"topics":["cli-app","pdf","pdf-manipulation","pdf-processing","pdf-python","pdftk-alternative","pdftl","pikepdf","python-pdf","qpdf"],"latest_commit_sha":null,"homepage":"https://pdftl.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pdftl.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-05T13:07:03.000Z","updated_at":"2026-01-28T17:44:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pdftl/pdftl","commit_stats":null,"previous_names":["pdftl/pdftl"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/pdftl/pdftl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdftl%2Fpdftl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdftl%2Fpdftl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdftl%2Fpdftl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdftl%2Fpdftl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pdftl","download_url":"https://codeload.github.com/pdftl/pdftl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdftl%2Fpdftl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29234154,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T14:18:14.570Z","status":"ssl_error","status_checked_at":"2026-02-08T14:18:14.071Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli-app","pdf","pdf-manipulation","pdf-processing","pdf-python","pdftk-alternative","pdftl","pikepdf","python-pdf","qpdf"],"created_at":"2026-01-03T20:13:18.732Z","updated_at":"2026-02-08T15:03:53.455Z","avatar_url":"https://github.com/pdftl.png","language":"Python","readme":"# pdftl\n\n\u003cimg align=\"right\" width=\"100\" src=\"https://raw.githubusercontent.com/pdftl/pdftl/main/.github/assets/pdftl.svg\"\u003e\n\n[![PyPI](https://img.shields.io/pypi/v/pdftl)](https://pypi.org/project/pdftl/)\n[![CI](https://github.com/pdftl/pdftl/actions/workflows/ci.yml/badge.svg)](https://github.com/pdftl/pdftl/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/pdftl/pdftl/graph/badge.svg)](https://codecov.io/gh/pdftl/pdftl)\n[![Documentation Status](https://readthedocs.org/projects/pdftl/badge/?version=latest)](https://pdftl.readthedocs.io/en/latest/?badge=latest)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pdftl)](https://pypi.org/project/pdftl/)\n![Static Badge](https://img.shields.io/badge/platform-linux%20%7C%20windows%20%7C%20macos-lightgrey)\n\n**pdftl** (\"PDF tackle\") is a CLI tool for PDF manipulation written in Python. It is intended to be a command-line compatible extension of the venerable `pdftk`.\n\nLeveraging the power of [`pikepdf`](https://github.com/pikepdf/pikepdf) ([qpdf](https://github.com/qpdf/qpdf)) and other modern libraries, it offers advanced capabilities like cropping, chopping, regex text replacement, adding text and arbitrary content stream injection.\n\n## Quick start\n```bash\npipx install pdftl[full]\n\n# merge, crop to letter paper, rotate last page and output with encryption with one command\npdftl A=a.pdf B=b.pdf cat A1-5 B2-end \\\n    --- crop '4-8,12(letter)' \\\n    --- rotate endright \\\n    output out.pdf owner_pw foo user_pw bar encrypt_aes256\n```\n\n## Key features and `pdftk` compatibility\n\n* **Familiar syntax:** Command-line compatible with `pdftk`. Verified against [Mike Haertl's php-pdftk test suite][5] and the [pdftk-java][8] test suite logic, so `s/pdftk/pdftl/` should result in working scripts.\n* **Pipelining:** Chain multiple operations in a single command using `---`.\n* **Performant:** `pdftl` seems faster than `pdftk-java` for many operations (based on informal benchmarks). Reason: `pdftl` mostly drives `pikepdf` which drives `qpdf`, a fast C++ library.\n* **Extra/enhanced operations and features** such as zooming pages, smart merging preserving links and outlines, cropping/chopping up pages, text extraction, optimizing images.\n* **Modern security:** Supports AES-256 encryption and modern permission flags out of the box.\n* **Content editing:** Find \u0026 replace text via regular expressions, inject raw PDF operators, or overlay dynamic text.\n\n`pdftl` maintains command-line compatibility with `pdftk` while introducing features required for modern PDF workflows.\n\n| Feature | `pdftk` (Legacy) | `pdftl` (Modern) |\n| :--- | :--- | :--- |\n| **Pipelining** | ❌ (Requires temp files) | ✅ **Native** (Chain ops with `---`) |\n| **Encryption** | ⚠️ (Obsolete RC4) | ✅ **AES-256 Support** |\n| **Syntax** | Standard | ✅ **Compatible Extension** |\n| **Page Geometry** | ❌ | ✅ **Crop to fit, Zoom, \u0026 Chop** |\n| **Pipelined Logic** | ❌ | ✅ **Rotate + Stamp in one command** |\n| **Plugins** | ❌ | ✅ **Custom operations/mutation scripts written in Python** |\n| **Installation** | Often complex binary | ✅ **Simple `pipx install pdftl`** |\n| **Performance** | Variable | ✅ **Powered by pikepdf/qpdf** |\n| **Link Integrity**| ⚠️ Often breaks TOC/Links|✅ **Preserves internal cross-refs** |\n| **Shell Completion** | ❌ | ✅ **bash, zsh and powershell** |\n| **Help** | ⚠️ Basic (manpage) | ✅ **Self-documenting: [`pdftl help \u003coperation/option/topic/tag\u003e`][7]** |\n\n## Installation\n\nInstall [`pipx`](https://pipx.pypa.io), and then:\n\n```bash\npipx install pdftl[full]\n```\n\nA simple `pip install pdftl[full]` install is also supported.\n\n**Note:** The `[full]` install includes [`ocrmypdf`](https://pypi.org/project/ocrmypdf/) for image optimization, [`reportlab`](https://pypi.org/project/reportlab/) for text generation, [`pypdfium2`](https://pypi.org/project/pypdfium2/) for text extraction and robust flattening, and [`pyHanko`][6] for cryptographic signature functionality. Omit `[full]` to omit those features and dependencies.\n\n## Key features\n\n### 📄 Standard operations\n\n* **Combine:** [`cat`](https://pdftl.readthedocs.io/en/latest/operations/cat.html), [`shuffle`](https://pdftl.readthedocs.io/en/latest/operations/shuffle.html) (interleave pages from multiple docs).\n* **Split:** [`burst`](https://pdftl.readthedocs.io/en/latest/operations/burst.html) (split into single pages), [`delete`](https://pdftl.readthedocs.io/en/latest/operations/delete.html) pages.\n* **Metadata:** [`dump_data`](https://pdftl.readthedocs.io/en/latest/operations/dump_data.html), [`update_info`](https://pdftl.readthedocs.io/en/latest/operations/update_info.html), [`attach_files`](https://pdftl.readthedocs.io/en/latest/operations/attach_files.html), [`unpack_files`](https://pdftl.readthedocs.io/en/latest/operations/unpack_files.html).\n* **Watermarking:** [`stamp`](https://pdftl.readthedocs.io/en/latest/operations/stamp.html) / [`background`](https://pdftl.readthedocs.io/en/latest/operations/background.html) (single page), [`multistamp`](https://pdftl.readthedocs.io/en/latest/operations/multistamp.html) / [`multibackground`](https://pdftl.readthedocs.io/en/latest/operations/multibackground.html).\n\n### ✂️ Geometry \u0026 splitting\n\n* **Rotate:** [`rotate`](https://pdftl.readthedocs.io/en/latest/operations/rotate.html) pages (absolute or relative).\n* **Crop:** [`crop`](https://pdftl.readthedocs.io/en/latest/operations/crop.html) to margins or standard paper sizes (e.g., \"A4\").\n* **Chop:** [`chop`](https://pdftl.readthedocs.io/en/latest/operations/chop.html) pages into grids or rows (e.g., split a scanned spread into two pages).\n* **Shift, scale and spin** page content *inside* the page boundaries using [`place`](https://pdftl.readthedocs.io/en/latest/operations/place.html).\n\n### 📝 Forms \u0026 annotations\n\n* **Forms:** [`fill_form`](https://pdftl.readthedocs.io/en/latest/operations/fill_form.html), [`generate_fdf`](https://pdftl.readthedocs.io/en/latest/operations/generate_fdf.html), [`dump_data_fields`](https://pdftl.readthedocs.io/en/latest/operations/dump_data_fields.html).\n* **Annotations:** [`modify_annots`](https://pdftl.readthedocs.io/en/latest/operations/modify_annots.html) (surgical edits to link properties, colors, borders), [`delete_annots`](https://pdftl.readthedocs.io/en/latest/operations/delete_annots.html), [`dump_annots`](https://pdftl.readthedocs.io/en/latest/operations/dump_annots.html).\n\n### 🔐 Security\n* **Decryption:** using [`input_pw`](https://pdftl.readthedocs.io/en/latest/general/input.html).\n* **Encryption:** using [`owner_pw`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#owner-pw-pw), [`user_pw`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#user-pw-pw) and [`encrypt_aes256`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#encrypt-aes256), optionally setting permissions with [`allow`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#allow-perm).\n* **Signatures:** add secure signatures using [`sign_key`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#sign-key-file) and [`sign_cert`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#sign-cert-file). List and verify signatures using [`dump_signatures`](https://pdftl.readthedocs.io/en/latest/operations/dump_signatures.html) (powered by [`pyHanko`][6]).\n\n### 🛠️ Advanced\n\n* **Text replacement:** [`replace`](https://pdftl.readthedocs.io/en/latest/operations/replace.html) text in content streams using regular expressions (experimental).\n* **Code injection:** [`inject`](https://pdftl.readthedocs.io/en/latest/operations/inject.html) raw PDF operators at the head/tail of content streams.\n* **Optimization:** [`optimize_images`](https://pdftl.readthedocs.io/en/latest/operations/optimize_images.html) (smart compression via OCRmyPDF).\n* **Dynamic text:** [`add_text`](https://pdftl.readthedocs.io/en/latest/operations/add_text.html) supports Bates stamping and can add page numbers, filenames, timestamps, etc.\n* **Cleanup:** [`normalize`](https://pdftl.readthedocs.io/en/latest/operations/normalize.html) content streams, [`linearize`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#linearize) for web viewing.\n* **Plugins:** write your own custom operation in Python, save to `~/.config/pdftl/operations` (*nix) or\n `%APPDATA%\\pdftl\\config` (Windows) and you can use it in pdftl, just like the built-in operations. And you can [`mutate_content`](https://pdftl.readthedocs.io/en/latest/operations/mutate_content.html) using simple Python scripts.\n\n## Examples\n\nFor more than 100 other examples: `pdftl help examples`.\n\n### Concatenation\n\n```bash\n# Merge two files\npdftl in1.pdf in2.pdf cat output combined.pdf\n\n# Now with in2.pdf zoomed in\npdftl A=in1.pdf B=in2.pdf cat A Bz1 output combined2.pdf\n```\n\n### Geometry\n\n```bash\n# Take pages 1-5, rotate them 90 degrees East, and crop to A4\npdftl in.pdf cat 1-5east --- crop \"(a4)\" output out.pdf\n```\n\n### Pipelining\n\nYou can chain operations without intermediate files using `---`:\n\n```bash\n# Burst a file, but rotate and stamp every page first\npdftl in.pdf rotate south \\\n  --- stamp watermark.pdf \\\n  --- burst output page_%04d.pdf\n```\n\n### Forms and metadata\n\n```bash\n# Fill a form and flatten it (make it non-editable)\npdftl form.pdf fill_form data.fdf flatten output signed.pdf\n```\n\n### Modify annotations\n\n```bash\n# Change all Highlight annotations on odd pages to Red\npdftl docs.pdf modify_annots \"odd/Highlight(C=[1 0 0])\" output red_notes.pdf\n```\n\n### Modify content\n\n```bash\n# Add a watermark, the pdftk way\npdftl in.pdf stamp watermark.pdf output marked1.pdf\n```\n\n```\n# Add an obnoxious semi-transparent red watermark on odd pages only\npdftl in.pdf add_text 'odd/YOUR AD HERE/(position=mid-center, font=Helvetica-Bold, size=72, rotate=45, color=1 0 0 0.5)' output with_ads.pdf\n```\n\n```\n# Add Bates numbering starting at 000121\n# Result: DEF-000121, DEF-000122, ...\npdftl in.pdf \\\n  add_text \"/DEF-{page+120:06d}/(position=bottom-center, offset-y=10)\" \\\n  output bates.pdf\n```\n\n```\n# Content stream replacment with regular expressions (YMMV)\n# Change black to red\npdftl in.pdf replace '/0 0 0 (RG|rg)/1 0 0 \\1/' output redder.pdf\n```\n\n\n## Python API\n\nWhile `pdftl` is primarily a CLI tool, it also exposes a robust Python API for integrating PDF workflows into your scripts.\n It supports both a Functional interface (similar to the CLI) and a Fluent interface (for method chaining).\n\n```python\nfrom pdftl import pipeline\n\n# Chain operations fluently without saving intermediate files\n(\n    pipeline(\"input.pdf\")\n    .rotate(\"right\")\n    .stamp(\"watermark.pdf\")\n    .save(\"output.pdf\")\n)\n```\n\nSee the **[API Tutorial][4]** for more details.\n\n## Operations and options\n\n| Operation                                                                                               | Description                                                     |\n|---------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------|\n| [`add_text`](https://pdftl.readthedocs.io/en/latest/operations/add_text.html)                           | Add user-specified text strings to PDF pages                    |\n| [`attach_files`](https://pdftl.readthedocs.io/en/latest/operations/attach_files.html)                   | Attach files to the output PDF                                  |\n| [`background`](https://pdftl.readthedocs.io/en/latest/operations/background.html)                       | Use a 1-page PDF as the background for each page                |\n| [`burst`](https://pdftl.readthedocs.io/en/latest/operations/burst.html)                                 | Split a single PDF into individual page files                   |\n| [`cat`](https://pdftl.readthedocs.io/en/latest/operations/cat.html)                                     | Concatenate pages from input PDFs into a new PDF                |\n| [`chop`](https://pdftl.readthedocs.io/en/latest/operations/chop.html)                                   | Chop pages into multiple smaller pieces                         |\n| [`crop`](https://pdftl.readthedocs.io/en/latest/operations/crop.html)                                   | Crop pages                                                      |\n| [`delete`](https://pdftl.readthedocs.io/en/latest/operations/delete.html)                               | Delete pages from an input PDF                                  |\n| [`delete_annots`](https://pdftl.readthedocs.io/en/latest/operations/delete_annots.html)                 | Delete annotation info                                          |\n| [`dump_annots`](https://pdftl.readthedocs.io/en/latest/operations/dump_annots.html)                     | Dump annotation info                                            |\n| [`dump_data`](https://pdftl.readthedocs.io/en/latest/operations/dump_data.html)                         | Metadata, page and bookmark info (XML-escaped)                  |\n| [`dump_data_annots`](https://pdftl.readthedocs.io/en/latest/operations/dump_data_annots.html)           | Dump annotation info in pdftk style                             |\n| [`dump_data_fields`](https://pdftl.readthedocs.io/en/latest/operations/dump_data_fields.html)           | Print PDF form field data with XML-style escaping               |\n| [`dump_data_fields_utf8`](https://pdftl.readthedocs.io/en/latest/operations/dump_data_fields_utf8.html) | Print PDF form field data in UTF-8                              |\n| [`dump_data_utf8`](https://pdftl.readthedocs.io/en/latest/operations/dump_data_utf8.html)               | Metadata, page and bookmark info (in UTF-8)                     |\n| [`dump_dests`](https://pdftl.readthedocs.io/en/latest/operations/dump_dests.html)                       | Print PDF named destinations data to the console                |\n| [`dump_files`](https://pdftl.readthedocs.io/en/latest/operations/dump_files.html)                       | List file attachments                                           |\n| [`dump_layers`](https://pdftl.readthedocs.io/en/latest/operations/dump_layers.html)                     | Dump layer info (JSON)                                          |\n| [`dump_signatures`](https://pdftl.readthedocs.io/en/latest/operations/dump_signatures.html)             | List and validate digital signatures                            |\n| [`dump_text`](https://pdftl.readthedocs.io/en/latest/operations/dump_text.html)                         | Print PDF text data to the console or a file                    |\n| [`fill_form`](https://pdftl.readthedocs.io/en/latest/operations/fill_form.html)                         | Fill a PDF form                                                 |\n| [`filter`](https://pdftl.readthedocs.io/en/latest/operations/filter.html)                               | Do nothing (the default if `\u003coperation\u003e` is absent)             |\n| [`generate_fdf`](https://pdftl.readthedocs.io/en/latest/operations/generate_fdf.html)                   | Generate an FDF file containing PDF form data                   |\n| [`inject`](https://pdftl.readthedocs.io/en/latest/operations/inject.html)                               | Inject code at start or end of page content streams             |\n| [`insert`](https://pdftl.readthedocs.io/en/latest/operations/insert.html)                               | Insert blank pages                                              |\n| [`modify_annots`](https://pdftl.readthedocs.io/en/latest/operations/modify_annots.html)                 | Modify properties of existing annotations                       |\n| [`move`](https://pdftl.readthedocs.io/en/latest/operations/move.html)                                   | Move pages to a new location                                    |\n| [`multibackground`](https://pdftl.readthedocs.io/en/latest/operations/multibackground.html)             | Use multiple pages as backgrounds                               |\n| [`multistamp`](https://pdftl.readthedocs.io/en/latest/operations/multistamp.html)                       | Stamp multiple pages onto an input PDF                          |\n| [`mutate_content`](https://pdftl.readthedocs.io/en/latest/operations/mutate_content.html)               | Mutate page content streams using a user-supplied Python script |\n| [`normalize`](https://pdftl.readthedocs.io/en/latest/operations/normalize.html)                         | Reformat page content streams                                   |\n| [`optimize_images`](https://pdftl.readthedocs.io/en/latest/operations/optimize_images.html)             | Optimize images                                                 |\n| [`place`](https://pdftl.readthedocs.io/en/latest/operations/place.html)                                 | Shift, scale, and spin page content                             |\n| [`replace`](https://pdftl.readthedocs.io/en/latest/operations/replace.html)                             | Regex replacement on page content streams                       |\n| [`render`](https://pdftl.readthedocs.io/en/latest/operations/render.html)                               | Render PDF pages as images                                      |\n| [`rotate`](https://pdftl.readthedocs.io/en/latest/operations/rotate.html)                               | Rotate pages in a PDF                                           |\n| [`shuffle`](https://pdftl.readthedocs.io/en/latest/operations/shuffle.html)                             | Interleave pages from multiple input PDFs                       |\n| [`stamp`](https://pdftl.readthedocs.io/en/latest/operations/stamp.html)                                 | Stamp a 1-page PDF onto each page of an input PDF               |\n| [`unpack_files`](https://pdftl.readthedocs.io/en/latest/operations/unpack_files.html)                   | Unpack file attachments                                         |\n| [`update_info`](https://pdftl.readthedocs.io/en/latest/operations/update_info.html)                     | Update PDF metadata from dump_data instructions                 |\n| [`update_info_utf8`](https://pdftl.readthedocs.io/en/latest/operations/update_info_utf8.html)           | Update PDF metadata from dump_data_utf8 instructions            |\n\n| Option                                                                                                             | Description                                               |\n|--------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------|\n| [`allow \u003cperm\u003e`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#allow-perm)                       | Specify permissions for encrypted files                   |\n| [`compress`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#compress)                             | Compress output file streams (default)                    |\n| [`drop_info`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#drop-info)                           | Discard document-level info metadata                      |\n| [`drop_xfa`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#drop-xfa)                             | Discard form XFA data if present                          |\n| [`drop_xmp`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#drop-xmp)                             | Discard document-level XMP metadata                       |\n| [`encrypt_128bit`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#encrypt-128bit)                 | Use 128 bit encryption (obsolete, maybe insecure)         |\n| [`encrypt_40bit`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#encrypt-40bit)                   | Use 40 bit encryption (obsolete, highly insecure)         |\n| [`encrypt_aes128`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#encrypt-aes128)                 | Use 128 bit AES encryption (maybe obsolete)               |\n| [`encrypt_aes256`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#encrypt-aes256)                 | Use 256 bit AES encryption                                |\n| [`flatten`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#flatten)                               | Flatten all annotations                                   |\n| [`keep_final_id`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#keep-final-id)                   | Copy final input PDF's ID metadata to output              |\n| [`keep_first_id`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#keep-first-id)                   | Copy first input PDF's ID metadata to output              |\n| [`linearize`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#linearize)                           | Linearize output file(s)                                  |\n| [`no_encrypt_metadata`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#no-encrypt-metadata)       | Leave metadata unencrypted                                |\n| [`need_appearances`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#need-appearances)             | Set a form rendering flag in the output PDF               |\n| [`output \u003cfile\u003e`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#output-file)                     | The output file path, or a template for burst             |\n| [`owner_pw \u003cpw\u003e`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#owner-pw-pw)                     | Set owner password and encrypt output                     |\n| [`replacement_font \u003cfile\u003e`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#replacement-font-file) | Replace the font used for all form fields with a TTF file |\n| [`sign_cert \u003cfile\u003e`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#sign-cert-file)               | Path to certificate PEM                                   |\n| [`sign_field \u003cname\u003e`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#sign-field-name)             | Signature field name (default: Signature1)                |\n| [`sign_key \u003cfile\u003e`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#sign-key-file)                 | Path to private key PEM                                   |\n| [`sign_pass_env \u003cvar\u003e`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#sign-pass-env-var)         | Environment variable with sign_cert passphrase            |\n| [`sign_pass_prompt`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#sign-pass-prompt)             | Prompt for sign_cert passphrase                           |\n| [`uncompress`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#uncompress)                         | Disable compression of output file streams                |\n| [`user_pw \u003cpw\u003e`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#user-pw-pw)                       | Set user password and encrypt output                      |\n| [`verbose`](https://pdftl.readthedocs.io/en/latest/misc/output_options.html#verbose)                               | Turn on verbose output                                    |\n\n\n## Links\n\n* **License:** This project is licensed under the [Mozilla Public License 2.0][1].\n* **Changelog:** [CHANGELOG.md][2].\n* **Documentation:** [pdftl.readthedocs.io][3].\n\n[1]: https://raw.githubusercontent.com/pdftl/pdftl/main/LICENSE\n[2]: https://github.com/pdftl/pdftl/blob/main/CHANGELOG.md\n[3]: https://pdftl.readthedocs.io\n[4]: https://pdftl.readthedocs.io/en/latest/api_tutorial.html\n[5]: https://github.com/mikehaertl/php-pdftk\n[6]: https://github.com/MatthiasValvekens/pyHanko\n[7]: https://pdftl.readthedocs.io/en/latest/general/help.html\n[8]: https://gitlab.com/pdftk-java/pdftk\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpdftl%2Fpdftl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpdftl%2Fpdftl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpdftl%2Fpdftl/lists"}