2017-04-21 2 views
0

PDF 생성기를 만들려고하는데 거의 다 왔지만 양식 필드를 업데이트하는 마지막 단계를 알 수 없습니다.필드를 PyPDF2로 업데이트하는 방법

파이썬 3.6

첫 번째 단계는 (어느 거기에 그들은 모두 매우 유사하지만, 많은 그리고 그들은 모두 같은 양식 필드를) PDF를 다운로드하는 것입니다와 Windows 환경에서 PyPDF2을 사용하고 있습니다 . 다음 코드는 pdf를 열고 새로운 것을 작성합니다. 내 생각은 양식 필드 사전을 업데이트하고 그 사전을 새 파일에 쓰면 원하는 변경이 이루어질 것입니다. 문제는 업데이트 된 사전을 적용하는 방법을 알아낼 수 없다는 것입니다.

pdf = open(file, 'rb') 
flObj = PdfFileReader(pdf) 
flObj.decrypt(password) 
dict = flObj.getFormTextFields() 
writer = PdfFileWriter() 
outputstream = open(my_file, 'wb') 
dict['DB_Code'] = '2809785' #as an example 
for i in range(flObj.getNumPages()): 
    writer.addPage(flObj.getPage(i)) 
writer.write(outputstream) 
outputstream.close() 

내가 getFormTextFields 함수에 의해 반환 된 사전이 적용되는 페이지를 제공하지 않습니다 그러나 updatePageFormFieldValues ​​(페이지 필드)이 있음을 PyPDF2의 documentation에서 볼 수 있습니다 (필드가 4 분산되어 pdf의 페이지는 항상 그렇습니다), 그래서 이것을 어떻게 적용해야하는지 잘 모르겠습니다.

다른 여러 가지 질문과 해결책을 보았습니다 (예 : this).하지만 내 요구에 맞지 않는다고 생각합니다.

미리 감사드립니다.

답변

0

그래서 대답은 파일을보고 페이지별로 수동으로 필드를 찾아야한다는 것입니다. 고맙게도 필드는 문서간에 위치가 바뀌지 않습니다.

pdf 파일이 다시 그려지지 않는 곳에 버그가있는 것 같습니다 (일반적으로? 아마도)? 필드를 클릭하면 PyPDF2가 입력 한 새로운 텍스트를 볼 수 있지만 영구적으로 변경 사항을 보려면 수동으로 복사하여 붙여 넣어야합니다.