2016-03-21 11 views
1

Ich arbeite an einem Python 3.4 Projekt, das fdfgen und pdftk verwendet, um ein pdf auszufüllen. Ich kann Textfelder ziemlich leicht ausfüllen. Das Ding, das ich nicht herausfinden kann, ist, wie man eine Kiste überprüft.Wie man Kästchen in einem PDF mit fdfgen in Python eincheckt

Hier ist der Teil meiner Python-Skript:

 fields = generate_vs300_field_list(answers_dict) # Returns list of tuples of fields and text to be added to pdf 
     fdf = forge_fdf("", fields, [], [], []) 
     logging.debug('Called forge_fdf function. About to open fdf_file.') 
     fdf_file = open(os.path.join(destination_dir, 'vs300.fdf'), 'wb') 
     logging.debug('Opened fdf_file. About to write to it.') 
     fdf_file.write(fdf) 
     fdf_file.close() 
     logging.debug('Wrote to fdf_file and closed it.') 
     cmd = 'pdftk "{0}" fill_form "{1}" output "{2}" dont_ask'.format(
      './styles/vs300.pdf', 
      os.path.join(destination_dir, 'vs300.fdf'), 
      os.path.join(destination_dir, 'vs300.pdf') 
     ) 
     logging.debug('About to send this command to pdftk: ' + cmd) 
     os.system(cmd) 
     logging.debug('Command sent. Removing temporary fdf file.') 
     os.remove(os.path.join(destination_dir, 'vs300.fdf')) 

ich erfolgreich eine Liste von Tupeln erstellen können forge_fdf zugeführt werden, wobei das erste Element in dem Tupel dem Feldnamen zu sein, und der zweite der Text für das Feld, das ich hinzufügen möchte.

Was ich nicht herausfinden kann, wie man vorgeht, ist ein Kästchen anzukreuzen. Wenn ich pdftk dump_data_fields auf meinem pdf laufen, hier ist der Eintrag für das Kontrollkästchen zu überprüfen Ich versuche:

FieldType: Button 
FieldName: Absolute Divorce 
FieldNameAlt: Absolute Divorce 
FieldFlags: 0 
FieldJustification: Left 
FieldStateOption: Off 
FieldStateOption: On 

Ich bin mir nicht sicher, wie a), um die FDF-Datei zu ändern, so dass sie die Checkbox angezeigt macht wie überprüft worden ist, und b), wie man diese Änderung tatsächlich mit fdfgen macht.

Antwort

0

Kontrollkästchenfelder über fdfgen durchlaufen die Variablen fdf_data_names und nicht fdf_data_strings. Sie sollten auch das PDF selbst überprüfen, um zu sehen, was das Kontrollkästchen für seinen "Ein" Auslöser verwendet.

Sie rufen zu forge_fdf würde dann wie folgt aussehen:

forge_fdf("", fields, data_names)