title: How to edit editable pdf using the pdfrw library?
body: <p>I been doing research on how to edit PDF using Python and i have found this article:<br /> 
  <a href="https://bostata.com/post/how_to_populate_fillable_pdfs_with_python" rel="noreferrer">How to Populate Fillable PDF's with Python</a></p>
  
  <p>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.</p>
  
  <pre><code>#! /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)
  </code></pre>