XWPF POI How to setting text in paragraph without wordwrap

妖精的绣舞 提交于 2021-02-11 13:51:28

问题


XWPF Paragraph POI - I want to create paragraph but in the last text or last line in this paragraph without wordwrap. How to setting ..... Thanks....

String kalimat="Aaaa bbb ccc ddd eee fffffff ggg hhh. Jjjjj kkk lll mmm nnnn oo pppppp qqqqq rrrr sssssssss tt uuu.";   
paragraph = document.createParagraph();
paragraph.setAlignment(ParagraphAlignment.BOTH);
paragraph.setSpacingBefore(0);
paragraph.setSpacingAfter(0);
paragraph.setSpacingBetween(1.5);

run = paragraph.createRun();
run.setFontFamily("Bookman Old Style");
run.setFontSize(12);
run.addTab();
run.setText(kalimat);

paragraph = document.createParagraph();
**//paragraph.setWordWrap(false);**
//paragraph.setWordWrapped(false);

paragraph.setAlignment(ParagraphAlignment.BOTH);
paragraph.setSpacingBefore(0);
paragraph.setSpacingAfter(0);
paragraph.setSpacingBetween(1.5);
run = paragraph.createRun();
run.setFontFamily("Bookman Old Style");
run.setFontSize(12);
run.setText("---------------------------------------------------------------------------------------------------------------------------------------------");

回答1:


Word is generally not able setting all word wrap to no wrap. It will never printing something into the page margins except there are indents set which goes into the page borders. Of course also it never prints something outside the page size itself.

So only possibility would be setting paragraph indents negative which means going into the page margins. For example setting right paragraph indent -6 inches means this indent goes 6 inches into the right page margin.

But as of your example I suspect you wants underlining a paragraph. This should not be done using ASCII art (----------) but better using the appropriate paragraph settings.

But from your previous questions I can see you also wants having a justify aligned paragraph having fill characters (leader characters) up to the right page margin in last line. This can be achieved using tab stop at position of right page margin. But then the page size and page margins needs to be set explicitly. And this is not fully supported by apache poi until now. Therefore the low level ooxml-schemas classes needs to be used.

Example (using apache poi 4.0.1) which shows it all:

import java.io.FileOutputStream;

import org.apache.poi.xwpf.usermodel.*;


public class CreateWordParagraphRightIndentBottomBorderline {
 public static void main(String[] args) throws Exception {

  XWPFDocument document = new XWPFDocument();

  XWPFParagraph paragraph = document.createParagraph();
  XWPFRun run=paragraph.createRun();  
  run.setText("Following paragraph has right indent set going into right page margin:");

  paragraph = document.createParagraph();
  paragraph.setIndentationRight(-1440*6); // measurement unit is Twips (Twentieth of an inch point)
  // 1 inch = 72 pt = 72 * 20 = 1440 Twips; -1440*6 = -6 inches right indention
  run=paragraph.createRun();  
  run.setText("This text goes into the page margin. This text goes into the page margin. This text goes into the page margin. This text goes into the page margin. ");

  paragraph = document.createParagraph();
  paragraph.setBorderBottom(Borders.SINGLE);
  run=paragraph.createRun();  
  run.setText("This is a paragraph which is bottom underlined.");

  paragraph = document.createParagraph();
  paragraph.setAlignment(ParagraphAlignment.BOTH); // alingment justify
  // set tab stop at position 6.5 inches 
  // (right page margin for page size letter and 1 inch left and right page margin)
  paragraph.getCTP().getPPr().addNewTabs().addNewTab();
  paragraph.getCTP().getPPr().getTabs().getTabArray(0).setVal(
   org.openxmlformats.schemas.wordprocessingml.x2006.main.STTabJc.LEFT);
  paragraph.getCTP().getPPr().getTabs().getTabArray(0).setLeader(
   org.openxmlformats.schemas.wordprocessingml.x2006.main.STTabTlc.HYPHEN);
  paragraph.getCTP().getPPr().getTabs().getTabArray(0).setPos(java.math.BigInteger.valueOf(Math.round(6.5 * 1440))); 
  run=paragraph.createRun();  
  run.setText("This is justify aligned paragraph having fill characters (leaders) up to tab stop in last line. This is justify aligned paragraph having fill characters (leaders) up to tab stop in last line. This is justify aligned paragraph having fill characters (leaders) up to tab stop in last line.");
  run.addTab();

  // set page size letter format (8.5 x 11 inches)
  document.getDocument().getBody().addNewSectPr().addNewPgSz();
  document.getDocument().getBody().getSectPr().getPgSz().setW(java.math.BigInteger.valueOf(Math.round(8.5 * 1440)));
  document.getDocument().getBody().getSectPr().getPgSz().setH(java.math.BigInteger.valueOf(Math.round(11 * 1440)));
  // set 1 inch left and right page marign
  document.getDocument().getBody().getSectPr().addNewPgMar();
  document.getDocument().getBody().getSectPr().getPgMar().setLeft(java.math.BigInteger.valueOf(1440));
  document.getDocument().getBody().getSectPr().getPgMar().setRight(java.math.BigInteger.valueOf(1440));

  FileOutputStream out = new FileOutputStream("CreateWordParagraphRightIndentBottomBorderline.docx");
  document.write(out);
  out.close();
  document.close();

 }
}

Result:



来源:https://stackoverflow.com/questions/53926521/xwpf-poi-how-to-setting-text-in-paragraph-without-wordwrap

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!