Я создал FormFields для PDF в Foxit PDF.
Я написал программу на Python, чтобы заполнить эти поля FormFields. Я объединяю этот PDF (который я заполнил Python) с помощью другие таблицы с моим кодом (pdf2merge). Весь этот PDF-файл является временным файлом («TIJDELIJKE_TF_FILE.pdf»), когда это делается, я делаю копию этого файла и сохраняю его в указанном c месте (userpdflocation_compleet). После этого я удаляю временный файл.
Когда все это завершено, появляется странная вещь. Когда я устанавливаю панель предварительного просмотра в проводнике, я вижу, что текстовые поля пусты.
Когда я открываю документ, текстовые поля заполняются. Это ссылки на скриншоты: Панель предварительного просмотра в проводнике Когда я открываю документ PDF
Это отображается для временного файла и завершенного файла.
Так что теперь мне нужно, чтобы каждый документ выполнял «Microsoft print to PDF», потому что в противном случае люди думают, что PDF не завершен. Когда я загружаю весь этот документ на платформу, например, в облако. Панель предварительного просмотра в этом облаке почти такая же, как моя панель предварительного просмотра в проводнике файлов, пустая ....
while uitvoering >= 1:
print("Workbook wordt geladen")
wb=load_workbook(filepath,data_only = True)
print("Workbook is geladen")
sheet=wb.active
infile = sheet["V4"].value
rij=sheet["O5"].value
print("rij is:")
print(rij)
einderij=sheet["Q5"].value
print("einde rij is:")
print(einderij)
Aantaltekstvelden = sheet["S7"].value
if sheet["S7"].value == None :
Aantaltekstvelden = input('Hoeveel tekstvelden zijn er? ')
else:
print("tekstvelden zijn uitgelezen")
print(Aantaltekstvelden)
Firstrun=1
int(Aantaltekstvelden)
Aantaltekstvelden = Aantaltekstvelden + 12
print(Aantaltekstvelden)
while rij<=einderij:
if sheet.cell(row=rij,column=1).value == "Frontpage":
print("er staat frontpage")
outfile = sheet.cell(row=rij,column=47).value
def set_need_appearances_writer(writer):
# See 12.7.2 and 7.7.2 for more information:
# http://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf
try:
catalog = writer._root_object
# get the AcroForm tree and add "/NeedAppearances attribute
if "/AcroForm" not in catalog:
writer._root_object.update({
NameObject("/AcroForm"): IndirectObject(len(writer._objects), 0, writer)})
need_appearances = NameObject("/NeedAppearances")
writer._root_object["/AcroForm"][need_appearances] = BooleanObject(True)
return writer
except Exception as e:
print('set_need_appearances_writer() catch : ', repr(e))
return writer
inputStream = open(infile, "rb")
pdf_reader = PdfFileReader(inputStream, strict=False)
if "/AcroForm" in pdf_reader.trailer["/Root"]:
pdf_reader.trailer["/Root"]["/AcroForm"].update(
{NameObject("/NeedAppearances"): BooleanObject(True)})
pdf_writer = PdfFileWriter()
set_need_appearances_writer(pdf_writer)
if "/AcroForm" in pdf_writer._root_object:
pdf_writer._root_object["/AcroForm"].update(
{NameObject("/NeedAppearances"): BooleanObject(True)})
field_dictionary = {}
i = 12
print("O5 is uitgelezen")
while i<Aantaltekstvelden:
name = sheet.cell(row=10, column=i).value
print(name)
waarde = sheet.cell(row=rij, column=i).value
print(waarde)
field_dictionary[name]=waarde
i=i+1
print("gedaan met field_dictionary")
pdf_writer.addPage(pdf_reader.getPage(0))
pdf_writer.updatePageFormFieldValues(pdf_writer.getPage(0), field_dictionary)
outputStream = open(outfile, "wb")
pdf_writer.write(outputStream)
inputStream.close()
outputStream.close()
else:
print("geen frontpage")
Извините за мой плохой английский sh.