Я использую этот код Python для получения информации из формы PDF (имена полей и содержимое полей):
import sys
import six
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdftypes import resolve1
fp = open("C:\\Users\\user\\Desktop\\Example.pdf", "rb")
parser = PDFParser(fp)
doc = PDFDocument(parser)
fields = resolve1(doc.catalog["AcroForm"])["Fields"]
for i in fields:
field = resolve1(i)
name, value = field.get("T"), field.get("V")
print ("{0}:{1}".format(name,value))
Он работает нормально, но моя проблема связана с именами полей. Мне нужно, чтобы эти имена были точно такими же, как мой db, с учетом этого: LL.LL.NNNN (L-Letter, N-Number).
Когда я переименовываю имена полей с этой номенклатурой, код не работать как положено. Сначала я подумал, что это проблема, связанная с Adobe Acrobat Pro D C. Но я тоже переименовал с помощью PDFStudio, и возникла та же ошибка. Вот что я получаю от Python консоли отладки:
NORMAL NAMING
1. b'Given Name Text Box':b'John'
2. b'Family Name Text Box':b'Smith'
3. b'House nr Text Box':b'32'
4. b'Address 2 Text Box':b'45 Street'
5. b'Postcode Text Box':b'12345'
6 b'Country Combo Box':b'Portugal'
7. b'Height Formatted Field':b'190'
8. b'City Text Box':b'Lisbon'
9. b'Driving License Check Box':/'Yes'
10. b'Favourite Colour List Box':b'Yellow'
11. b'Language 1 Check Box':/'Off'
12. b'Language 2 Check Box':/'Yes'
13. b'Language 3 Check Box':/'Off'
14. b'Language 4 Check Box':/'Off'
15. b'Language 5 Check Box':/'Yes'
16. b'Gender List Box':b'\xfe\xff\x00M\x00a\x00n'
17. b'Address 1 Text Box':b'44 Street'
WITH MY NOMENCLATURE NAMING
1. b'Family Name Text Box':b'Smith'
2. b'House nr Text Box':b'32'
3. b'Address 2 Text Box':b'45 Street'
4. b'Postcode Text Box':b'12345'
5. b'Country Combo Box':b'Portugal'
6. b'Height Formatted Field':b'190'
7. b'City Text Box':b'Lisbon'
8. b'Driving License Check Box':/'Yes'
9. b'Favourite Colour List Box':b'Yellow'
10. b'Language 1 Check Box':/'Off'
11. b'Language 2 Check Box':/'Yes'
12. b'Language 3 Check Box':/'Off'
13. b'Language 4 Check Box':/'Off'
14. b'Language 5 Check Box':/'Yes'
15. b'Gender List Box':b'\xfe\xff\x00M\x00a\x00n'
16. b'Address 1 Text Box':b'44 Street'
17. b'MD':None
Я изменил имя первого поля с «Текстовое поле с заданным именем» на «MD.LE.0001». Python result читает только «MD», показывает содержимое поля как «none» и изменяет порядок полей, отправляя переименованное поле со строки 1 на строку 17.
Я хочу знать, что происходит и что - буквы "b", которые Python представляет в результате.
Ссылка на файл pdf, использованный в этом тесте