Skip to main content

A Library to fill and flatten pdfs

Project description

fillpdf

https://pypi.org/project/fillpdf/

Overview

This is a simple package to make filling pdfs much easier. I have delt with a lot projects that involve manipulating pdfs in python. I found no easy solution for writting, or flattening pdfs, so I decided to make a library to make this task much easier. As a young software engineer I kept this library really simple but practicle and am open to any input for the future!

  • Fills pdfs
  • Lists fields in pdf
  • Flattens pdfs (Turns to a non-editable pdf)

Function Documentation

import fillpdf
from fillpdf import fillpdfs
get_form_fields (returns the data_dict)
get_form_fields(input_pdf_path)
  • input_pdf_path- path to your pdf you want to alter (including the pdf name could just leave as 'blank.pdf' if the pdf is in your current directory)
For Example:
fillpdfs.get_form_fields('blank.pdf')
print_form_fields (prints the data_dict)
print_form_fields(input_pdf_path)
  • input_pdf_path- path to your pdf you want to alter (including the pdf name could just leave as 'blank.pdf' if the pdf is in your current directory)
For Example:
fillpdfs.print_form_fields('blank.pdf')
write_fillable_pdf
write_fillable_pdf(input_pdf_path, output_pdf_path, data_dict, flatten=False)
  • input_pdf_path- path to your pdf you want to alter (including the pdf name could just leave as 'blank.pdf' if the pdf is in your current directory)
  • output_pdf_path- path of where you want your pdf to write to (including the pdf name could just leave as 'new.pdf' to write to current directory)
  • data_dict- dictionary that contains the fields to write to as your key and what to write to it as your value (get this from the get_form_fields function)
  • flatten (default=False)- If True, then the fields will become uneditable when you write to the pdf.
For Example:
data_dict = {'Address 1 Text Box': '500 West Main Street',
'Driving License Check Box': 'Yes',
'Language 1 Check Box': 'Off',}

fillpdfs.write_fillable_pdf('blank.pdf', 'new.pdf', data_dict)
  • For radio boxes ('Off' = not filled, 'Yes' = filled)
  • For check boxes ('Off' or '' = not filled, 'Yes' = filled)
  • For drop downs (Enter the name of the desired drop down option)
  • For radio groups ('0' = The first option, '1' = The second option, '2' = the third option, etc.)
flatten_pdf
flatten_pdf(input_pdf_path, output_pdf_path, as_images=False)
  • input_pdf_path- path to your pdf you want to alter (including the pdf name could just leave as 'blank.pdf' if the pdf is in your current directory)
  • output_pdf_path- path of where you want your pdf to write to (including the pdf name could just leave as 'new.pdf' to write to current directory)
  • as_images=False- Default is False meaning it will update each individual annotation and set it to False. True means it will convert to images and then reinsert into the pdf. Try this if the first is not working. (this image technique requires poppler.)
For Example:
fillpdfs.flatten_pdf('new.pdf', 'newflat.pdf')

Command Line Use

A command line wrapper is available for this tool. Here are the two commands:

extractfillpdf
extractfillpdf input_pdf_path
or
extractfillpdf input_pdf_path -o output_json_path
  • input_pdf_path- path to your pdf you want to alter (including the pdf name could just leave as 'blank.pdf' if the pdf is in your current directory)
  • output_json_path- path of where you want your json file containing the fields and contents of the pdf to write to (If not included then the default will be the same name/path as the input_pdf_path but .json instead of .pdf)
For Example:
extractfillpdf blank.pdf
or
extractfillpdf blank.pdf -o data.json
insertfillpdf
insertfillpdf -j input_json_path -o output_pdf_path input_pdf_path
  • input_pdf_path- path to your pdf you want to alter (including the pdf name could just leave as 'blank.pdf' if the pdf is in your current directory)
  • input_json_path- path to the json file that you generated and modified with the extractfillpdf command.
  • output_pdf_path- path of where you want your pdf to write to (including the pdf name could just leave as 'new.pdf' to write to current directory)
For Example:
insertfillpdf -j blank.json -o new.pdf blank.pdf
Help Command
extractfillpdf --help or extractfillpdf -h

Will bring up this menu

positional arguments:
  test.pdf              Input pdf file

optional arguments:
  -h, --help            show this help message and exit
  -o test.json, --output test.json
                        Output file to write result, if none given, it will be the input file
                        with the JSON extension
  --version             show program's version number and exit
  -v, --verbose         set loglevel to INFO
  -vv, --very-verbose   set loglevel to DEBUG
Or:
insertfillpdf --help or insertfillpdf -h

Will bring up this menu

positional arguments:
  test.pdf              Input PDF file

optional arguments:
  -h, --help            show this help message and exit
  -j test.json, --JSON test.json
                        Input JSON file, if none given, it will be the input file with the JSON
                        extension
  -o test_out.pdf, --output test_out.pdf
                        Output file to write result, if none given, it will be the input file
                        with '_out.pdf' extension'
  --version             show program's version number and exit
  -v, --verbose         set loglevel to INFO
  -vv, --very-verbose   set loglevel to DEBUG

Software Demo Video

Installation

pip install fillpdf 
conda install -c conda-forge poppler

poppler is only needed if you are using the as_images=True mode of the flattenpdf function

Development Environment

Builds upon
  • 'pdfrw'
  • 'pdf2image'
  • 'Pillow'
  • 'poppler'

Useful Websites

Credit

Future Work

  • give option to place text by coordinate
  • alter or view pdf versions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fillpdf-0.6.0.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

fillpdf-0.6.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file fillpdf-0.6.0.tar.gz.

File metadata

  • Download URL: fillpdf-0.6.0.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/49.2.0.post20200714 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.3

File hashes

Hashes for fillpdf-0.6.0.tar.gz
Algorithm Hash digest
SHA256 65b8ef15a0f97a5e1916b25f36329be245107aa085964a1d72b2000621bdfe53
MD5 378c58f6c4fc5aa51ae1bf8ee77a4c9b
BLAKE2b-256 8d0a738677821beacf1f6f0f8ef4720bdcb7063d2a60154725d8c880fdd4cd19

See more details on using hashes here.

File details

Details for the file fillpdf-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: fillpdf-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.5.0.1 requests/2.26.0 setuptools/49.2.0.post20200714 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.3

File hashes

Hashes for fillpdf-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2c809aa76b1bd0809bb27f1880e61cdf4aa2d37e8d42a6f787811af71236771f
MD5 c9157892a9a1d3bb5543bd2efc66c00f
BLAKE2b-256 5d6ea5851a247589010fd0f5241986e6fb3cfb83fb7a297854c9e6eca02f438e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page