Pypdftk
Python module to drive the awesome pdftk binary.
Install / Use
/learn @revolunet/PypdftkREADME
pypdftk |pypi| |travis| |githubactions|
Python module to drive the awesome pdftk_ binary.
Proudly brought to you by many awesome contributors_
Features
fill_form
Fill a PDF with given data and returns the output PDF path
- ``pdf_path`` : input PDF
- ``datas`` : dictionnary of fielf names / values
- ``out_file`` (default=auto) : output PDF path. will use tempfile if
not provided
- ``flatten`` (default=True) : flatten the final PDF
- ``drop_xfa`` (default=False) : omit XFA data from the output PDF
``concat``
~~~~~~~~~~
Merge multiple PDFs into one single file and returns the output PDF path
- ``files`` : list of PDF files to concatenate
- ``out_file`` (default=auto) : output PDF path. will use tempfile if
not provided
``get_pages``
Concatenate a list of page ranges into one single file and returns the output PDF path
pdf_path: input PDFranges(default=\[]) :[]for clone,[[2]]for extracting 2nd page,[[1],[2,5],[3]]for concatenating pages 1, 2-5, 3out_file(default=auto) : output PDF path. will use tempfile if not provided
split
Split a single PDF in many pages and return a list of pages paths
- ``pdf_path`` : input PDF
- ``out_dir`` (default=auto) : output PDFs dir. will use tempfile if
not provided
**warning** if you give a out_dir parameter, ensure its empty, or the
split function may destroy your files and return incorrect results.
``gen_xfdf``
Generate a XFDF file suited for filling PDF forms and return the generated XFDF file path
datas: dictionnary of datas
get_num_pages
Return the number of pages for a given PDF
- ``pdf_path`` : input PDF file
``replace_page``
~~~~~~~~~~~~~~~~
Replace a page in a PDF (pdf_path) by the PDF pointed by
pdf_to_insert_path.
- ``pdf_path`` is the PDF that will have its page replaced.
- ``page_number`` is the number of the page in pdf_path to be replaced.
It is 1-based.
- ``pdf_to_insert_path`` is the PDF that will be inserted at the old
page.
``stamp``
~~~~~~~~~
Applies a stamp (from ``stamp_pdf_path``) to the PDF file in
``pdf_path``. If no ``output_pdf_path`` is provided, it returns a
temporary file with the result PDF.
``[compress | uncompress]``
::
These are only useful when you want to edit PDF code in a text editor like vim or emacs. Remove PDF page stream compression by applying the uncompress filter. Use the compress filter to restore compression.
pdf_path: input PDF fileout_file(default=auto) : output PDF path. will use tempfile if not providedflatten(default=True) : flatten the final PDF
dump_data_fields
Read PDF and output form field statistics.
- ``pdf_path`` : input PDF file
Example
-------
Fill a PDF model and add a cover page :
.. code:: python
import pypdftk
datas = {
'firstname': 'Julien',
'company': 'revolunet',
'price': 42
}
generated_pdf = pypdftk.fill_form('/path/to/model.pdf', datas)
out_pdf = pypdftk.concat(['/path/to/cover.pdf', generated_pdf])
pdftk path
----------
By default, path is ``/usr/bin/pdftk``, but you can override it with the
``PDFTK_PATH`` environment variable
Licence
-------
This module is released under the permissive `MIT license`_. Your
contributions are always welcome.
.. _pdftk: http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
.. _revolunet: http://revolunet.com
.. _awesome contributors: https://github.com/revolunet/pypdftk/graphs/contributors
.. _MIT license: http://revolunet.mit-license.org
.. |pypi| image:: https://img.shields.io/pypi/v/pypdftk
:target: https://pypi.org/project/pypdftk/
.. |travis| image:: https://travis-ci.org/yguarata/pypdftk.svg?branch=master
:target: https://travis-ci.org/yguarata/pypdftk
.. |githubactions| image:: https://github.com/revolunet/pypdftk/actions/workflows/quality.yml/badge.svg
Related Skills
node-connect
346.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
107.6kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
107.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
346.8kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
