1

poi-ooxmlを使用してdocx-documentを生成しようとしています。次のコードは、私が望むほとんどのドキュメントを生成しますが、何らかの理由で、テキストから終了スペースと開始スペースを削除します。

XWPFDocument document = new XWPFDocument();

XWPFParagraph paragraph1 = document.createParagraph();
XWPFRun para1run1 = paragraph1.createRun();
para1run1.setText("Dette er ein tekst med space på slutten. Den har ein ");

XWPFRun para1run2 = paragraph1.createRun();
para1run2.setText("utheva tekst");
para1run2.setBold(true);

XWPFRun para1run3 = paragraph1.createRun();
para1run3.setText(" før ein tekst med space i byrjinga. Denne paragrafen skal også ha litt tekst slik at den blir ganske lang og går over fleire linjer.");

XWPFParagraph paragraph2 = document.createParagraph();
XWPFRun para2run1 = paragraph2.createRun();
para2run1.setText("Dette er ein tekst med space på slutten. Den har ein ");

XWPFRun para2run2 = paragraph2.createRun();
para2run2.setText("kursiv tekst");
para2run2.setItalic(true);

XWPFRun para2run3 = paragraph2.createRun();
para2run3.setText(" før ein tekst med space i byrjinga. Denne paragrafen skal også ha litt tekst slik at den blir ganske lang og går over fleire linjer.");

document.write(new FileOutputStream("c:/tmp/doc/docxtest.docx"));

コードはドキュメントを生成しますが、テキスト「uthevatekst」と「kursivtekst」の前後のスペースが削除され、最終結果は次のようになります。


Dette er eintekstmedspacepåslutten。Denhareinuthevatekstføreintekstmedspaceibyrjinga。Denneparagrafenskalogsåhalitttekstslik at den blirganskelangoggåroverfleirelinjer。

Dette er eintekstmedspacepåslutten。Denhareinkursivtekstføreintekstmedspaceibyrjinga。Denneparagrafenskalogsåhalitttekstslik at den blirganskelangoggåroverfleirelinjer。


「uthevatekst」は太字で、「kursivtekst」は斜体です。

これに関するどんな助けも非常に役に立ちます。

4

2 に答える 2

2

これは非常に古い質問であることは知っていますが、同様の問題が発生したばかりで、JasonPlutext によって提供されたヒントを使用してそれを理解することができました。

実行時にテキストを直接設定する代わりに、これを使用する必要があります。

XWPFRun firstBit = para.createRun();
CTText firstBitText = linkPrefix.getCTR().addNewT();
linkPrefixText.setStringValue("This is the first half of text with trailing space ");
linkPrefixText.setSpace(SpaceAttribute.Space.PRESERVE);

para.createRun().setText("and here is more text that doesn't need space preserved");

どちらがあなたに与えるでしょう

これはテキストの前半で末尾にスペースがあり、ここにはスペースを保持する必要のない追加のテキストがあります

それよりも

これはテキストの前半で末尾にスペースがあり、ここにはスペースを保持する必要のない追加のテキストがあります

実行時にフォーマットを直接設定できるはずです。

于 2015-09-28T22:58:29.287 に答える
2

poi を使用する場合でも docx4j を使用する場合でも、@xml:space ie が必要になると思います

<w:t xml:space="preserve">

docx4j では、これを設定するメソッド setSpace(String value) があります。

于 2010-08-31T03:08:45.807 に答える