Metadata-Version: 2.1
Name: PyPDFForm
Version: 1.1.6
Summary: The Python library for PDF forms.
Home-page: https://github.com/chinapandaman/PyPDFForm
Author: Jinge Li
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE

# PyPDFForm

PyPDFForm is a pure Python library for PDF form processing. 
It allows filling a PDF form programmatically by creating 
a Python dictionary with keys matching its annotated names 
for elements like text fields and checkboxes. It also supports other functionalities such as 
drawing image and merging multiple PDFs together.

## Installing

Install using [pip](https://pip.pypa.io/en/stable/quickstart/):

```shell script
pip install PyPDFForm
```

## Quick Example

A sample PDF form can be found [here](https://github.com/chinapandaman/PyPDFForm/blob/master/pdf_samples/v2/sample_template.pdf). Download it and try:

```python
import os

from PyPDFForm import PyPDFForm2

PATH_TO_DOWNLOADED_SAMPLE_PDF_FORM = os.path.join(
    os.path.expanduser("~/Downloads"), "sample_template.pdf"
)  # Change this to where you downloaded the sample PDF form

PATH_TO_FILLED_PDF_FORM = os.path.join(
    os.path.expanduser("~"), "output.pdf"
)  # Change this to where you wish to put your filled PDF form

with open(PATH_TO_FILLED_PDF_FORM, "wb+") as output:
    output.write(
        PyPDFForm2(PATH_TO_DOWNLOADED_SAMPLE_PDF_FORM)
        .fill(
            {
                "test": "test_1",
                "check": True,
                "test_2": "test_2",
                "check_2": False,
                "test_3": "test_3",
                "check_3": True,
            },
        )
        .read()
    )
```

After running the above code snippet you can find `output.pdf` at the location you specified, 
and it should look like [this](https://github.com/chinapandaman/PyPDFForm/blob/master/pdf_samples/v2/sample_filled.pdf).

## Documentation

* [API Reference](https://github.com/chinapandaman/PyPDFForm/blob/master/docs/v2/api_reference.md)
* [API Reference (Old)](https://github.com/chinapandaman/PyPDFForm/blob/master/docs/api_reference.md)
* [Examples](https://github.com/chinapandaman/PyPDFForm/blob/master/docs/v2/examples.md)
* [Examples (Old)](https://github.com/chinapandaman/PyPDFForm/blob/master/docs/examples.md)

## PyPDFForm vs PyPDFForm2

PyPDFForm provides additional functionalities like editable support for PDF forms created 
using Adobe Acrobat or Sejda.

PyPDFForm2 supports PDF forms made by a wider range of tools, while discarding some of those additional 
functionalities.

It is strongly advised that you use PyPDFForm2 since only minimum supports will be made to PyPDFForm 
from now on.

## How to Contribute

If you wish to improve this library, there is one specific way you can contribute 
on top of the usual open source project norms such as issues and pull requests.

It is difficult to make sure that the library supports all the PDF form creating tools out 
there. So if you run into a case where the library does not work for certain PDF forms created by 
certain tools, feel free to open an issue with the problematic PDF form attached. I will seek 
to make the library support the attached PDF form as well as the tool used to create it.
