2013-05-20 3 views
1

우리는 잘못 설계된 XFA 스타일의 PDF 양식으로 작업해야하지만 양식 작성자는 아닙니다 (이 작업을 수행하는 데 필요한 양식이 많이 있습니다). 양식은 대부분의 필드에 대한 데이터 바인딩을 가지고 있습니다 (iText가 XFA의 필드 값을 설정하는 데 필요한 것 같습니다). 그러나 일부 필드에는 필드 바인딩이 없습니다.iText에서 XFA 필드 데이터 바인딩 값을 추가 할 수 있습니까?

예 : 텍스트 필드 FIRSTNAME은 XFA 데이터를 읽을 때 픽업 분야 에 iText를 수 있으며 설정 값이 유지 될 수있는 바인딩 "을 사용하여 이름 (FIRSTNAME)" 어도비 라이브 사이클 디자이너가 있습니다. TextField 성은 바인딩 세트가 없지만 사용자는 이름과 동일하게 보입니다. iText를 또는 iTextSharp를 사용

, 프로그래밍 방식 찾아서 (라이브 사이클에 가서 수동으로 각 하나를 찾을 필요없이) iText를 함께 스스로 설정 데이터 바인딩을 가지고 데이터 바인딩없이 모든 XFA TextField의를 변경하는 방법은 무엇입니까?

답변

2

XFA와 관련하여 iText (Sharp)가 일반적으로하는 일은 관련 XML (XDP 스트림)을 추출, 삽입 및 바꾸는 것입니다.

그래서 iText (샤프)를 사용하여 XFA 양식을 나타내는 XML 문서를 추출한 다음 해당 XML 문서를 처리 할 수 ​​있습니다. XML 문서를 조정 한 후에 iText (Sharp)를 사용하여 다시 삽입 할 수 있습니다.

XML을 검사하여 확인 (예 : 이름) 필드와 확인되지 않은 필드 (예 : 성)가 정확히 다른지 확인해야합니다. 필드 및 데이터 바인딩에 대한 정보는 "template"요소에 있습니다. "필드"요소는 필드를 정의합니다. 그들은 자식으로 "bind"요소를 가지고 있는데, 이는 일부 필드에 대해 누락되었을 수 있습니다. 세부 사항은 XFA 사양에서 찾을 수 있습니다

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("xfa form edit.pdf")); 
xfa.setDomDocument(doc); 
xfa.setChanged(true); 
XfaForm.setXfa(xfa, stamper.getReader(), stamper.getWriter()); 
stamper.close(); 
reader.close(); 
: XML 문서 삽입

PdfReader reader = new PdfReader("xfa form.pdf"); 
XfaForm xfa = new XfaForm(reader); 
Document doc = xfa.getDomDocument(); 

: http://partners.adobe.com/public/developer/xml/index_arch.html

는 iText를 가진 XML 문서를 얻기

관련 문제