Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Exis.PdfEditor Python Demo Suite

PyPI Python License: MIT

A complete demo collection for exis-pdfeditor — a high-performance PDF toolkit for Python.

The library is the Python wrapper around the same Exis.PdfEditor engine that powers the .NET package and the PDF Batch Editor desktop application. The native binary is bundled in the wheel — no .NET runtime required.


Why Exis.PdfEditor?

Most Python PDF libraries (PyPDF, pdfplumber, ReportLab) either:

  • Render and rebuild the document, breaking forms, signatures, and exact spacing
  • Only read the PDF, with no editing capability
  • Require heavy native dependencies like Poppler or Ghostscript

Exis.PdfEditor parses the PDF content stream directly and performs surgical, in-place edits. The output is byte-for-byte identical to the original except for the changes you requested. Forms stay intact. Digital signatures remain valid. Spacing is pixel-perfect.

The native AOT-compiled binary is under 10 MB total and ships in the wheel — no runtime, no system dependencies.


Features Demonstrated

# Demo Function Description
01 Inspect inspect() Metadata, fonts, pages, encryption — license-free
02 Find & Replace find_replace() Single, batch, regex, styled replacements
03 Text Extraction extract_text() Plain and structured text extraction
04 Merge & Split merge(), split() Combine and split PDFs
05 Form Filling fill_form() Read fields, fill, flatten
06 Redaction redact() Text, regex, and area-based redaction
07 Watermark watermark() Text watermarks with positioning
08 Stamp stamp() Overlay/underlay another PDF
09 Optimize optimize() Compress and reduce file size
10 Encrypt & Decrypt encrypt(), decrypt() Passwords and permissions
11 Page Editing rotate(), crop(), reorder(), delete_pages() Page-level operations
12 Image Replace find_images(), replace_image() Logo replacement
13 Digital Signatures sign(), verify() X.509 signing
14 PDF/A Compliance pdfa_validate(), pdfa_convert() Archival format
15 Run All Demos Master script that runs every example

Quick Start

1. Install the library

pip install exis-pdfeditor

Platform wheels are available for:

  • Windows x64 (win_amd64)
  • Linux x64 (manylinux_2_17_x86_64)
  • macOS ARM64 / Apple Silicon (macosx_11_0_arm64)

2. Clone this demo repo

git clone https://github.com/exisllc/ExisPdfPythonDemo.git
cd ExisPdfPythonDemo

3. Set up a virtual environment (recommended)

python -m venv .venv

# Windows
.venv\Scripts\activate

# macOS / Linux
source .venv/bin/activate

pip install -r requirements.txt

4. Run a demo

# Run a single demo
python examples/02_find_replace.py

# Or run them all in sequence
python examples/run_all.py

Each demo writes its output to the output/ directory next to the script.


First Look — 5 Lines of Code

import exis_pdfeditor

# 14-day trial activates automatically — no key needed
exis_pdfeditor.initialize()

result = exis_pdfeditor.find_replace(
    "input.pdf", "output.pdf",
    "Acme Corp", "Globex Industries",
)

print(f"Replaced {result.totalReplacements} occurrences across {result.pagesModified} pages")

That's it. No SDK setup, no native binaries to install, no Java/.NET runtime to configure.


Code Examples

Inspect a PDF (free, no license required)

info = exis_pdfeditor.inspect("document.pdf")
print(f"{info.pageCount} pages, encrypted: {info.isEncrypted}")
print(f"Title: {info.title}, Author: {info.author}")
print(f"Form fields: {info.formFieldCount}")

Batch find & replace with multiple pairs

result = exis_pdfeditor.find_replace(
    "template.pdf", "filled.pdf",
    pairs=[
        {"search": "{{NAME}}",   "replace": "John Smith"},
        {"search": "{{DATE}}",   "replace": "2026-04-07"},
        {"search": "{{AMOUNT}}", "replace": "$1,250.00"},
    ],
)

Regex replacement (e.g. redact SSNs)

exis_pdfeditor.find_replace(
    "input.pdf", "output.pdf",
    pairs=[
        {"search": r"\d{3}-\d{2}-\d{4}", "replace": "XXX-XX-XXXX", "isRegex": True},
    ],
)

Fill a form and lock the values

exis_pdfeditor.fill_form(
    "w9_template.pdf", "w9_filled.pdf",
    fields={
        "FirstName": "Jane",
        "LastName": "Doe",
        "Email": "jane@example.com",
    },
    flatten=True,
)

Encrypt with permissions

exis_pdfeditor.encrypt(
    "report.pdf", "report_protected.pdf",
    user_password="openme",
    owner_password="secret",
    permissions=["Print"],  # Only printing allowed
)

Sign with a certificate

exis_pdfeditor.sign(
    "contract.pdf", "contract_signed.pdf",
    cert_path="cert.pfx",
    cert_password="certpass",
    reason="Approved",
    signer_name="Jane Doe",
)

For a complete tour, browse the examples/ folder. Every public function in the library has a runnable example.


Licensing

Tier Behavior
Free inspect(), pdfa_validate(), and dump_structure() work without any license
Trial Call initialize() with no key — 14 days, all features unlocked
Licensed Pass your key to initialize("XXXX-XXXX-XXXX-XXXX") or set EXIS_PDF_LICENSE_KEY
Evaluation After trial expiry, all features work on documents up to 3 pages

Purchase a developer license at pdfbatcheditor.com/developers. $499/year per developer.


Requirements

  • Python 3.9 or later
  • Windows x64, Linux x64, or macOS ARM64
  • ~10 MB on disk for the bundled native binary
  • No external dependencies

Project Structure

ExisPdfPythonDemo/
├── README.md
├── LICENSE                    # MIT (this demo collection)
├── requirements.txt
├── .gitignore
├── examples/
│   ├── _common.py             # Shared helpers (output dir, sample PDF builder)
│   ├── 01_inspect.py
│   ├── 02_find_replace.py
│   ├── 03_text_extraction.py
│   ├── 04_merge_split.py
│   ├── 05_form_filling.py
│   ├── 06_redaction.py
│   ├── 07_watermark.py
│   ├── 08_stamp.py
│   ├── 09_optimize.py
│   ├── 10_encrypt_decrypt.py
│   ├── 11_page_editing.py
│   ├── 12_image_replace.py
│   ├── 13_digital_signatures.py
│   ├── 14_pdfa.py
│   └── run_all.py
├── samples/                   # Drop your own test PDFs here
└── docs/
    └── API_QUICK_REFERENCE.md

Documentation


License

This demo suite is licensed under the MIT License.

exis-pdfeditor is a commercial library. The 14-day trial is fully featured with no credit card required. After trial expiry, all features remain available on documents up to 3 pages. Visit the PyPI page or developer page for licensing options.


Built with exis-pdfeditor by Exis LLC.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors