3

プロジェクトの要件を満たすためにdocx4jでカバーする必要のあるすべての「ドキュメント関連」機能をテストするための小さなJavaプログラムを構築しています。要約すると、ユーザーに「生のテンプレート」として提供される「コンテンツコントロール」を使用してテンプレートを作成できること。ユーザーがそれらを拡張して、最終的にデータを入力できるようにします。「繰り返して条件付き」の機能があるため、「docx4j」を扱っています。

これは、プログラムによる私の進歩です。

1)空白のドキュメントを作成します(DONE)

2)xmlデータ(請求書の例ではpart3.xml)を使用してカスタムxmlパーツを追加します。(終わり)

3)xml xpaths参照(請求書の例ではpart4.xml)を使用してカスタムxmlパーツを追加します。(終わり)

4)コンテンツコントロールを追加します(保留中)

請求書の例からのこの抜粋に似たものである必要があります。

<w:sdt>
  <w:sdtPr>
    <w:alias w:val="Customer name" />
    <w:tag w:val="od:xpath=x1&customer name=customer name" />
    <w:id w:val="1418037941" />
    <w:placeholder>
      <w:docPart w:val="DefaultPlaceholder_22675703" />
    </w:placeholder>
    <w:dataBinding w:xpath="/invoice[1]/customer[1]/name[1]" w:storeItemID="{8B049945-9DFE-4726-9DE9-CF5691E53858}" />
    <w:text />
  </w:sdtPr>
  <w:sdtContent>
    <w:p>
      <w:r>
        <w:t>Joe Bloggs</w:t>
     </w:r>
    </w:p>
  </w:sdtContent>
</w:sdt>

そしてここに私の質問があります:このxmlを生成する方法は?Javaコードで実行できますか、それともWordからのみ実行できますか?「1418037941」と「DefaultPlaceholder_22675703」の値はどのように生成されますか?私はそれらを「発明」することはできず、どこか他の場所で参照されていると思います。MainDocumentPartクラスでそのためのメソッドを探していましたが、見つかりませんでした。私は何かを誤解していますか?

他の手順は私にとってほとんど問題ありません:

5)「前処理」を実行します(完了)

6)「プロセス」を実行します(完了)

7)「ストリップ」を実行します(repatタグを削除することを除いて完了)

ご助力ありがとうございます!デビッド

4

1 に答える 1

2

あなたは確かにdocx4jを使用してプログラムでコンテンツコントロールを作成することができます。とはいえ、「テンプレート」を作成するための通常のアプローチは、このようなオーサリングツールを使用することです。

あなたの特定の質問に答えるために:-

  • w:placeholderは省略できます。

  • 仕様によると、w:idはタイプxsd:intであり、-2147483648から2147483647までの整数です。ランダムに生成することも、除外することもできます。

于 2012-10-16T06:51:08.560 に答える