は、総ページ数を取得するためにPOIのAPIで指定されたいずれかの方法がありますが、私は、文書のフッターにページ番号を追加することですが、私は、ページ値の合計数を追加することはできませんよ。 Word
でapache poi apiを使って単語文書を作成する際に、Xの書式Xでページ番号を追加するには?
答えて
ページ数は、その上の段落、トップ/ボトムマージンとパディング、プリンタ設定、手動で挿入改ページとフォントサイズのような多くのものを依存しています。したがって、ファイルに直接格納することはできません。 Word
がそのページをレンダリングしている間、それは即座に計算されます。
しかし、ページ番号と総ページ数も計算するフッタ内のフィールドを使用できます。
例:
import java.io.*;
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
public class CreateWordHeaderFooter {
public static void main(String[] args) throws Exception {
XWPFDocument doc= new XWPFDocument();
// the body content
XWPFParagraph paragraph = doc.createParagraph();
XWPFRun run=paragraph.createRun();
run.setText("The Body:");
paragraph = doc.createParagraph();
run=paragraph.createRun();
run.setText("Lorem ipsum.... page 1");
paragraph = doc.createParagraph();
run=paragraph.createRun();
run.addBreak(BreakType.PAGE);
run.setText("Lorem ipsum.... page 2");
paragraph = doc.createParagraph();
run=paragraph.createRun();
run.addBreak(BreakType.PAGE);
run.setText("Lorem ipsum.... page 3");
// create header-footer
XWPFHeaderFooterPolicy headerFooterPolicy = doc.getHeaderFooterPolicy();
if (headerFooterPolicy == null) headerFooterPolicy = doc.createHeaderFooterPolicy();
// create header start
XWPFHeader header = headerFooterPolicy.createHeader(XWPFHeaderFooterPolicy.DEFAULT);
paragraph = header.getParagraphArray(0);
if (paragraph == null) paragraph = header.createParagraph();
paragraph.setAlignment(ParagraphAlignment.LEFT);
run = paragraph.createRun();
run.setText("The Header:");
// create footer start
XWPFFooter footer = headerFooterPolicy.createFooter(XWPFHeaderFooterPolicy.DEFAULT);
paragraph = footer.getParagraphArray(0);
if (paragraph == null) paragraph = footer.createParagraph();
paragraph.setAlignment(ParagraphAlignment.CENTER);
run = paragraph.createRun();
run.setText("Page ");
paragraph.getCTP().addNewFldSimple().setInstr("PAGE \\* MERGEFORMAT");
run = paragraph.createRun();
run.setText(" of ");
paragraph.getCTP().addNewFldSimple().setInstr("NUMPAGES \\* MERGEFORMAT");
doc.write(new FileOutputStream("CreateWordHeaderFooter.docx"));
}
}
Word
のフィールドは、次に{PAGE \* MERGEFORMAT}
と{NUMPAGES \* MERGEFORMAT}
あります。
この回答からインスピレーションを得て、現在のページとフッター。しかし、私は文書の本文に同じ種類の情報を追加することに失敗しました。私はまったく同じコードを使用していますが、フッターでは動作しますが、ドキュメントの本体では動作しない理由はありますか?追加情報:私はYYYY-MM-DD \「\\ * MERGEFORMAT」\「@ \\ DATE」と「* \\ MERGEFORMATをPAGE」を置換し、この場合には、コードが期待通りに動作していて、内部の現在の日付を追加します文書の本文 – rlar
私が書いたコードが実際に動作していることに気がつきました。唯一の問題は、フィールドが自動的に更新されず、空のままであることです。手動ですべてのフィールドの更新をトリガーすると、ページ数が文書の本文にも表示されます。 DATE変数にフィールドの更新を手動でトリガする必要はないのはなぜですか? – rlar
@rlar:問題はかなり明確です。 Wordは、最初にドキュメントの本文部分とヘッダーとフッター部分をレンダリングします。ページの実際のページ数と合計数は、すでに知られていない文書の体の部分をレンダリングしながら、そう。どちらもレンダリングプロセスの結果です。もちろん、日付はレンダリングプロセスに関係なく知られています。 –
- 1. apacheを使用して文書をExcelで作成するPOI
- 2. ダイナミックビューパネルの列番号をxページの書式設定
- 3. Apache POIは単語文書のハイパーリンクを抽出します
- 4. 番号とセルの書式設定apache poi
- 5. VBAマクロを使って単語文書に追加する方法
- 6. ColdFusion - POI Excelワークブックの書式番号:
- 7. java poi XWPF単語 - 新しい文書にブックマークを作成する
- 8. Apache POI - 単語文書のプレースホルダを検索
- 9. Apache POIで単語文書の一部を保護する方法
- 10. Laravelを使ってAPIから単語文書をダウンロードするには
- 11. C#動的に単語の文書に行を追加する
- 12. フラットなX文書からGroupJoinを作成するには?
- 13. 前の数字にX番号を追加する
- 14. Apache Poiを使用して、単語文書内の表内の表を構文解析する
- 15. mongoose:文書に単一のサブ文書を追加する
- 16. スタイルを使って単語文書に書き込む
- 17. ヘッダを上書きせずにPoiを使ってデータを追加する
- 18. パスワードapache poiを持つ単語(.doc)ファイルを追加します
- 19. Atomのスペルチェッカー辞書に単語を追加するには?
- 20. Xを検索してXを追加するExcelの式
- 21. Apache poiを使用してWord文書にデータを書き込みますか?
- 22. Apache POIを使用してワード文書に目に見えない段落を追加する
- 23. 単語テンプレートに基づいてasp.netに単語文書を作成します。
- 24. Apache POI単語テーブルの後ろにテキストを追加する最善の方法
- 25. 文書内に単語文書を挿入した後の単語API
- 26. asp.netページを単語文書にエクスポート
- 27. ファイルシステムに書き込まずにJavamailのMimeMessageにApache POI WorkBookを追加する
- 28. デュアルx軸(小数点)を使用したGoogle棒グラフの書式番号
- 29. 書式を失うことなく、別の単語文書に単語文書を挿入します。
- 30. ms単語文書の書式構造
残念ながら、単語にはファイルにページ番号が格納されず、テキスト、サイズなどに基づいてオンザフライで生成されます。 – Shank