itext (itextsharp)를 사용하여 PDF에서 XFA 형태의 필드를 채우십니까?
문제
PDF (Adobe LiveCycle Designer로 생성)에서 XFA 형태 필드를 채워야합니다. 우리는 PDF를 구문 분석하고 XFA 필드를 채우고 수정 된 PDF를 다시 저장하기 위해 itext (실제로 C#이있는 ItexTsharp)를 사용하려고합니다.
itext (매우 적은 ItextSharp 예제)에서 찾을 수있는 모든 예제는 Acroform 필드 수정에 대해 이야기합니다. 이 PDF에는 Acroform 필드가 없으며 XFA 만 사용합니다.
비표준 리소스에 대한 포인터는 도움이 될 것입니다 (나는 이미 주제에 대한 필수 인터넷 검색을 수행했으며 유용한 것을 찾지 못했습니다).
여기서 코드 예제는 내가하려는 일을 실제로 한 사람이라면 누구나 굉장 할 것입니다.
해결책
PDF에 데이터 패킷을 가져올 수 있다면 Acrobat의 XFA 런타임은 해당 필드를 데이터 패킷의 데이터로 채 웁니다.
이들 중 하나가 어떻게 보이는지, LiveCycle Designer (Acrobat Pro와 함께 제공)에서 양식을 작성하고 일부 필드를 추가하고 동적 PDF로 저장하십시오. Acrobat에서 양식을 열고 필드에 값을 입력하고 저장하십시오.
PDF 데이터를 피어링 할 수있는 도구로 PDF를 열면u003Cxfa:datasets> 입력 한 값이 포함 된 패킷. 그것이 당신이 자신을 만들고 PDF에 삽입하는 데 필요한 것입니다.
XDP 사양에는 데이터 패킷 및 병합 알고리즘에 대한 설명이 포함되어 있습니다. 여기에서 찾을 수 있습니다.
http://partners.adobe.com/public/developer/xml/index_arch.html
또는 Adobe에서 LiveCycle 서버를 구입하여 웹 서비스 호출을 포함하여 여러 가지 방법 으로이 모든 프로그래밍 방식으로 수행 할 수 있습니다.
다른 팁
itextsharp는 XFA와 함께 작동 할 수 있습니다. 모든 의심을 제거하려면 itext 웹 사이트의 샘플을 살펴보십시오.
using (FileStream existingPdf = new FileStream("existing.pdf", FileMode.Open))
using (FileStream sourceXml = new FileStream("source.xml", FileMode.Open))
using (FileStream newPdf = new FileStream("new.pdf", FileMode.Create))
{
// Open existing PDF
PdfReader pdfReader = new PdfReader(existingPdf);
// PdfStamper, which will create
PdfStamper stamper = new PdfStamper(pdfReader, newPdf);
stamper.AcroFields.Xfa.FillXfaForm(sourceXml);
stamper.Close();
pdfReader.Close();
}
나는 같은 문제가 있고 해결책을 찾았다 고 생각합니다. PDF 객체를 검사하기 위해 PowerShell을 사용하고 있습니다.
itextsharp dll을로드하십시오.
Add-Type -Path "C:\Users\micah\Desktop\itextsharp.dll"
PDF를 변수로로드하십시오.
$PDF = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList "C:\Users\micah\Desktop\test.pdf"
이 개체를 검사하십시오.
$PDF.AcroFields.XFA.DomDocument.XDP.DataSets.Data.TopMostSubForm | Get-Member
당신이보아야 할 것은 PDF의 모든 필드 가이 개체에 속성으로 있다는 것입니다. 다음과 같은 모든 필드를 빠르게 볼 수 있습니다.
$PDF.AcroFields.XFA.DomDocument.XDP.DataSets.Data.TopMostSubForm | Select-Object -Property "*"
그것은 마법 티켓이어야합니다. 이 위치는 원래 양식의 필드와 양식의 XFA 부분입니다.
이 책에서 itext가 이것을하지 않기 때문에이 책에서 말합니다. PDF를 변환 할 수 있습니까?