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)
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')

Software Demo Video

Installation

pip install fillpdf 
conda install -c conda-forge poppler

Development Environment

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

Useful Websites

Credit

Future Work

  • Add perfect fill (sometimes does not fill random things ie. drop down lists)
  • give option to place text by coordinate
  • easier way to fill the data dictionary in write_fillable_pdf function
  • fill drop downs

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.5.0.tar.gz (48.0 kB view details)

Uploaded Source

Built Distribution

fillpdf-0.5.0-py3-none-any.whl (57.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fillpdf-0.5.0.tar.gz
  • Upload date:
  • Size: 48.0 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.5.0.tar.gz
Algorithm Hash digest
SHA256 c5aae113c7f185bac225d96a9f0ddb3d16c8f6be8bd0101c2d6ad1e54d384d77
MD5 e289ae96a6d6373fce19ad2d7f5962f4
BLAKE2b-256 063034db6f7d0dab0870e5e1c230b4ebf1838c3025ce8c28fe7f3781a8e222ad

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fillpdf-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 57.6 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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cd621feafeea1ecacfba08d4cc3a90e622babe2f10ab98c16bec6f85c83b1173
MD5 5c28efd919465a87f752b8bcce4196ef
BLAKE2b-256 fdeb4988cf855ed2d8aaea38ebf011b74b15a6d849d877ee771f348c0be3a751

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