2009-06-25 34 views
14

XFAフォームフィールドをPDF(Adobe LiveCycle Designerで作成)に取り込む必要があります。 iText(実際にはC#でiTextSharp)を使用してPDFを解析し、XFAフィールドに値を入力してから、変更されたPDFを保存し直そうとしています。iText(iTextSharp)を使用してXFAフォームフィールドにPDFを埋め込む?

私はiText(ほとんどのiTextSharpの例)で見つけることのできるすべての例で、AcroFormフィールドの変更について説明しています。このPDFはAcroFormフィールドを持たず、XFAのみを使用します。

標準以外のリソースへのポインタが役立つでしょう(私はすでにトピックに関するグーグルグリーグを行いましたが、役に立たないものは見つかりませんでした)。

ここのコード例は、私がやろうとしていることを実際に行った人から素晴らしいものです。

+1

私はちょうど "iText in action"という本でそれを調べました。 "これはこの本の中では議論されていません"と書かれていますので、この本を購入しないでください。 –

答えて

5

データパケットをPDFに取り込むことができる場合、AcrobatのXFAランタイムはこれらのフィールドにデータパケットのデータを入力します。

LiveCycle Designer(Acrobat Proに付属)でフォームを作成し、フィールドをいくつか追加して動的PDFとして保存します。 Acrobatでフォームを開き、フィールドに値を入力して保存します。

PDFデータをピアリングするツールを使用してPDFを開くと、/ Catalog/AcroForm/XFAに、入力した値のパケットの< xfa:datasetsパケットが含まれています。これはあなた自身を作成し​​てPDFに挿入するために必要なものです。

XDP仕様には、データパケットとマージアルゴリズムの説明が含まれています。あなたはここでそれを見つけることができます:

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

代わりに、あなたは、Webサービスの呼び出しを含め、いくつかの方法でプログラムでこのすべてを行うことができますAdobeのLiveCycleサーバーを買います。

+0

これは役に立つ情報です@stevex。とても有難い。 iTextSharp内のオブジェクトを見ると、xfa:データセットのデータ(またはこれに対応すると思ったもの)が見えました。 –

0

これは本書ではこれをしていないためです。あなたのPDFを変換できますか?

+0

いいえ、それは私が修正する必要があるgov生成形式です、そして、人々はgovに再提出する必要があります。 –

+1

本が古くなっています - 2006年以降、XFAのサポートがあります。例については、http://1t3xt.info/examples/browse/?page=example&id=433およびhttp://1t3xt.info/examples/browseを参照してください。 /?page = example&id = 441 – JasonPlutext

+0

これらのリンクは無効です。更新してください –

3
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(); 
} 
+0

これは素晴らしいコードです、ありがとう! FillXfaFormに入力するXMLフォーマットの例を教えてください。ありがとう! –

1

私は同じ問題を持っていると私は私が解決策を見つけたと思います。私は、Powershellを使ってpdfオブジェクトを検査しています。

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部分の両方のフィールドです。

関連する問題