I been doing research on how to edit PDF using Python and i have found this article:
How to Populate Fillable PDF's with Python
However there is a problem once the program runs and you open the PDF the document is not populated only when you click on the tags it shows the data and when you click away it disappears again. This is code that can be found online that someone else has written.
#! /usr/bin/python
import os
import pdfrw
INVOICE_TEMPLATE_PATH = 'invoice_template.pdf'
INVOICE_OUTPUT_PATH = 'invoice.pdf'
ANNOT_KEY = '/Annots'
ANNOT_FIELD_KEY = '/T'
ANNOT_VAL_KEY = '/V'
ANNOT_RECT_KEY = '/Rect'
SUBTYPE_KEY = '/Subtype'
WIDGET_SUBTYPE_KEY = '/Widget'
def write_fillable_pdf(input_pdf_path, output_pdf_path, data_dict):
template_pdf = pdfrw.PdfReader(input_pdf_path)
annotations = template_pdf.pages[0][ANNOT_KEY]
for annotation in annotations:
if annotation[SUBTYPE_KEY] == WIDGET_SUBTYPE_KEY:
if annotation[ANNOT_FIELD_KEY]:
key = annotation[ANNOT_FIELD_KEY][1:-1]
if key in data_dict.keys():
annotation.update(
pdfrw.PdfDict(V='{}'.format(data_dict[key]))
)
pdfrw.PdfWriter().write(output_pdf_path, template_pdf)
data_dict = {
'business_name_1': 'Bostata',
'customer_name': 'company.io',
'customer_email': 'joe@company.io',
'invoice_number': '102394',
'send_date': '2018-02-13',
'due_date': '2018-03-13',
'note_contents': 'Thank you for your business, Joe',
'item_1': 'Data consulting services',
'item_1_quantity': '10 hours',
'item_1_price': '$200/hr',
'item_1_amount': '$2000',
'subtotal': '$2000',
'tax': '0',
'discounts': '0',
'total': '$2000',
'business_name_2': 'Bostata LLC',
'business_email_address': 'hi@bostata.com',
'business_phone_number': '(617) 930-4294'
}
if __name__ == '__main__':
write_fillable_pdf(INVOICE_TEMPLATE_PATH, INVOICE_OUTPUT_PATH, data_dict)