1

動的フィールドを含む XDP ファイルと動的 PDF ファイルがあります。

テキスト フィールドなどに入力することができます (以下のコードを参照)。

問題は、動的テーブル フィールドがあり、それを入力する方法がわからないことです。「ゼロから」テーブルを作成するための素晴らしいチュートリアルをたくさん見つけましたが、ここでは、テーブルは既に定義済みのフィールドです (幅、列数など)。

動的テーブル フィールドに入力するにはどうすればよいですか? どんな助けでも大歓迎です。

PS - この記事に基づいて、テキスト フィールドなどに入力するために使用しているコードは次のとおりです: http://bit.ly/12Xu1QY

string template = "template.pdf";
string new = "new.pdf";

var reader = new PdfReader(template);
var stamper = new PdfStamper(reader, new FileStream(file, FileMode.Create));

AcroFields fields = stamper.AcroFields;

fields.SetField("FIELD_NAME_1", "VALUE1");
fields.SetField("FIELD_NAME_2", "VALUE2");

stamper.Close();

編集:

@Bruno Lowagieの回答から判断すると、正しい表現を使用していないのではないかと思います。LiveCycle Designer File (XDP) があり、それを Dynamic PDF Form File (PDF) として保存しています。これは SAP アプリケーションからのものです。上記のコードは私にとってはうまく機能したので、実際には静的な PDF フォームであることを理解しています。

次に、テーブル フィールドは「FIELD」と呼ばれます。行を入力する方法が必要になります。

混乱して申し訳ありませんが、助けていただければ幸いです。

4

2 に答える 2

4

私を正しい方向に向けてくれた@Bruno Lowagieに感謝します。

今、私は解決策を再現します。

XFA フォームを含む XDP ファイル (Adobe LiveCycle ファイル) から始めました。その後、PDF ファイルに保存し、Acrobat Pro でフォームに入力し、最後にフォーム データを XML ファイルにエクスポートしました。

これは最終的にPdfStamper、PDF ファイルにデータを入力するために に渡した XML ファイルです。

最初に、この方法で XML を動的に生成しました。

var doc = new XDocument(new XDeclaration("1.0", "UTF-8", ""),
new XElement("CUSTOMER",
new XElement("FIRST_NAME", FirstNameTextBox.Text),
new XElement("LAST_NAME", LastNameTextBox.Text)
));

そして、私はそれをPdfStamperこの方法でに供給しました:

var reader = new PdfReader(templateFilename);
var stamper = new PdfStamper(reader, new FileStream(bolFilename, FileMode.Create));
var xml = GenerateXml(); // Above code
var stream = new MemoryStream(UTF8Encoding.Default.GetBytes(xml ?? String.Empty));

stamper.AcroFields.Xfa.FillXfaForm(stream);
stamper.Close();

(コードを using ステートメント内に入れることを忘れないでください。)

于 2013-05-31T23:14:08.063 に答える
1

あなたは2つの異なる技術を混同しています。

あなたが参照している記事は、静的フォームに記入します。つまり、AcroForm フィールドのみを含む PDF、またはAcroForm テクノロジ XML Forms Architecture (XFA)に基づくフォームの定義で構成されるハイブリッド フォームのいずれかです。

動的フォームについて話しているということは、純粋な XFA について話しているということです。完全に異なる例が必要です: Java / C#

メソッドを使用してフォームに入力したらfillXfaForm()、クローズド ソースのXFA Workerを使用してフォームをフラット化できます。ダウンロードページもご覧ください。

于 2013-05-23T08:22:26.923 に答える