11import base64
22
3+ import fitz
34import htmlgenerator as hg
45from django import forms
56from django .shortcuts import get_object_or_404
@@ -88,6 +89,14 @@ def formview(request, pk):
8889 return formview_processing (request , form = form )
8990
9091
92+ def remove_pdf_password (pdf_content , password ):
93+ pdf = fitz .Document (stream = pdf_content )
94+ pdf .authenticate (password )
95+ ret = pdf .tobytes ()
96+ pdf .close ()
97+ return ret
98+
99+
91100@utils .aslayout
92101def pdfimportview (request , pk ):
93102 class UploadForm (forms .Form ):
@@ -101,9 +110,11 @@ class UploadForm(forms.Form):
101110 if uploadform .is_valid ():
102111 if uploadform .cleaned_data .get ("importfile" ):
103112 pdfcontent = uploadform .cleaned_data ["importfile" ].read ()
104- pdffields = models .pdf_fields (
105- pdfcontent , uploadform .cleaned_data ["password" ] or None
106- )
113+ if uploadform .cleaned_data ["password" ]:
114+ pdfcontent = remove_pdf_password (
115+ pdfcontent , uploadform .cleaned_data ["password" ]
116+ )
117+ pdffields = models .pdf_fields (pdfcontent )
107118 initial = {}
108119 for pdf_formfield in pdfimporter .fields .exclude (customform_field = None ):
109120 value = pdffields .get (pdf_formfield .pdf_field_name , "" )
0 commit comments