问题
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