itext (itextsharp)를 사용하여 PDF에서 XFA 형태의 필드를 채우십니까?

StackOverflow https://stackoverflow.com/questions/1041652

  •  22-07-2019
  •  | 
  •  

문제

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 웹 사이트의 샘플을 살펴보십시오.

http://itextpdf.com/examples/iia.php?id=165

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를 변환 할 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top