1

GMC Printnet Designer 7.0 で生成された pdf があります。そして、xfaテンプレートを含むxmlファイルがあります。それらをマージしてpdfにデータを埋め込みたい。(xmlを添付したくない!)

xml データを読み取ることができ、入力 pdf を読み取ることができ、メモリ ストリームを開始して、それを使用して出力データを生成することができます。しかし、itext で作成した PDF を確認すると、xfa フォームが表示されません。

ここに私のC#コードとxmlファイルがあります:

PdfReader reader = new PdfReader("in.pdf");
    MemoryStream ms = new MemoryStream();
    PdfStamper stamper = new PdfStamper(reader, ms);
    XfaForm xfa = new XfaForm(reader);
    XmlDocument doc = new XmlDocument();
    doc.Load("in.xml");
    xfa.DomDocument = doc;
    xfa.Changed = true;
    XfaForm.SetXfa(xfa, stamper.Reader, stamper.Writer);
    xfa.XfaPresent = true;
    stamper.Close();
    File.WriteAllBytes("out.pdf", ms.ToArray());

XML ファイル

<?xml version="1.0" encoding="UTF-8"?><xfa:data xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
<Invoice>
<InvoiceNr>1010101010101010</InvoiceNr>
<DateIssuance>2014-07-22</DateIssuance>
<PaymentDueDate>2014-09-09</PaymentDueDate>
<AmountToBePaid>53,25</AmountToBePaid>
</Invoice>
</xfa:data>
4

1 に答える 1

2

コメントで説明したように、私はあなたのコードを理解していません (また、どこで見つけたのかもわかりません)。公式ドキュメントによると、次のようにフォームに入力する必要があります。

using (PdfStamper stamper = new PdfStamper(reader, ms)) {
    AcroFields form = stamper.AcroFields;
    XfaForm xfa = form.Xfa;
    xfa.FillXfaForm(XmlReader.Create(new StringReader(xml)));
} 

XfaMoviesの例を参照してください。C# バージョンについては、http://tinyurl.com/itextsharpIIA2C08を参照してください。

アップデート:

コメントに、PDF と XML ファイルへのリンクを追加しました。両方のファイルに問題があります:

  1. PDF ファイルはフォームではありません。せいぜい、XFAF フォームの背景 PDF として使用できます。これは手動でのみ行うことができ、Adobe LiveCycle Designer などのデザイナーが必要です。
  2. XML ファイルは XFA ストリームではありません。私の本 (OP では NOT HELPING と定義されています) に記載されているように、XFA ストリームは、パーツ、パーツ、パーツなどのさまざまなパーツで構成されていconfigますが、さらに重要なのは、パーツと、パーツとパーツで構成されるパーツです。共有される XML には、一部のみが含まれており、存在せず、存在しません。したがって、この XML を PDF ファイルに統合して XFA フォームを作成することはできません。つまり、情報が不足しすぎているのです。localeSetxmptemplatedatasetsdatadatadescriptiondatadatadescriptiontemplate

あなたが質問で話していたファイルを見たので、不可能なことを尋ねていることは明らかです。XMLを取得し、xsdAdobe LiveCycle Designer などのツールにインポートしてから、テンプレート内のフィールドの場所を手動で定義し (その情報は XML にありません)、PDF をフォームの背景として定義する必要があります。 .

共有しているファイルを考えると、このプロセスを自動化する方法はありません。

于 2014-10-27T11:43:34.607 に答える