3.1、获取段落
1 2 3 4 5 6 7 8 9
   | WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File("D:/xxx.docx"));         List<Object> content = wordMLPackage.getMainDocumentPart().getContent();         for (Object o : content) {             if (o instanceof P){                 P p = (P) o;                                  TextUtils.getText(p);             }         }
  | 
 
3.2、段落信息
上述的对象P就是段落对象,对象P包括的属性有pPr、context等

- pPr:包括了段落的样式信息
 
- context:包括了本段落的文本样式信息
 
3.3、段落样式信息
BooleanDefaultTrue对象由new ObjectFactory().createBooleanDefaultTrue()创建
创建方式参考了Doxc4j插件的代码生成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
   | PPr pPr = p.getPPr();
  BooleanDefaultTrue keepNext = pPr.getKeepNext();
 
  BooleanDefaultTrue keepLines = pPr.getKeepLines();
 
  BooleanDefaultTrue pageBreakBefore = pPr.getPageBreakBefore();
 
  BooleanDefaultTrue widowControl = pPr.getWidowControl();
 
  BooleanDefaultTrue suppressLineNumbers = pPr.getSuppressLineNumbers();
 
  BooleanDefaultTrue suppressAutoHyphens = pPr.getSuppressAutoHyphens();
 
 
  BooleanDefaultTrue kinsoku = pPr.getKinsoku();
 
  BooleanDefaultTrue wordWrap = pPr.getWordWrap();
 
  BooleanDefaultTrue overflowPunct = pPr.getOverflowPunct();
 
  BooleanDefaultTrue topLinePunct = pPr.getTopLinePunct();
  BooleanDefaultTrue autoSpaceDE = pPr.getAutoSpaceDE();
  BooleanDefaultTrue autoSpaceDN = pPr.getAutoSpaceDN();
  BooleanDefaultTrue bidi = pPr.getBidi();
  BooleanDefaultTrue adjustRightInd = pPr.getAdjustRightInd();
  BooleanDefaultTrue snapToGrid = pPr.getSnapToGrid();
  BooleanDefaultTrue contextualSpacing = pPr.getContextualSpacing();
 
 
  BooleanDefaultTrue mirrorIndents = pPr.getMirrorIndents();
 
  BooleanDefaultTrue suppressOverlap = pPr.getSuppressOverlap();
  BooleanDefaultTrue collapsed = pPr.getCollapsed();
   | 
 
章节信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
   |  SectPr sectPr = pPr.getSectPr();
  BooleanDefaultTrue bidi = sectPr.getBidi();
  CTColumns cols = sectPr.getCols();
  CTDocGrid docGrid = sectPr.getDocGrid();
  CTEdnProps endnotePr = sectPr.getEndnotePr();
  List<CTRel> egHdrFtrReferences = sectPr.getEGHdrFtrReferences();
  CTFtnProps footnotePr = sectPr.getFootnotePr();
  BooleanDefaultTrue formProt = sectPr.getFormProt();
  CTLineNumber lnNumType = sectPr.getLnNumType();
  BooleanDefaultTrue noEndnote = sectPr.getNoEndnote();
  CTPaperSource paperSrc = sectPr.getPaperSrc();
  SectPr.PgBorders pgBorders = sectPr.getPgBorders();
  SectPr.PgMar pgMar = sectPr.getPgMar();
  CTPageNumber pgNumType = sectPr.getPgNumType();
  SectPr.PgSz pgSz = sectPr.getPgSz();
  CTRel printerSettings = sectPr.getPrinterSettings();
  BooleanDefaultTrue rtlGutter = sectPr.getRtlGutter();
  CTSectPrChange sectPrChange = sectPr.getSectPrChange();
  TextDirection textDirection = sectPr.getTextDirection();
  BooleanDefaultTrue titlePg = sectPr.getTitlePg();
  SectPr.Type type = sectPr.getType();
  CTVerticalJc vAlign = sectPr.getVAlign();
 
  | 
 
节属性的修订信息
1 2 3 4 5 6 7 8 9 10
   |  CTPPrChange pPrChange = pPr.getPPrChange();
  PPrBase pPr = pPrChange.getPPr();
  String author = pPrChange.getAuthor();
  XMLGregorianCalendar date = pPrChange.getDate();
  BigInteger id = pPrChange.getId();
 
  | 
 
引用的段落样式
1 2 3 4
   |  PPrBase.PStyle pStyle = pPr.getPStyle();
  String val = pStyle.getVal();
 
  | 
 
文本框架属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
   |  CTFramePr framePr = pPr.getFramePr();
  STDropCap dropCap = framePr.getDropCap();
  BigInteger lines = framePr.getLines();
  BigInteger w = framePr.getW();
  BigInteger h = framePr.getH();
  BigInteger vSpace = framePr.getVSpace();
  BigInteger hSpace = framePr.getHSpace();
  STWrap wrap = framePr.getWrap();
  STHAnchor hAnchor = framePr.getHAnchor();
  STVAnchor vAnchor = framePr.getVAnchor();
  BigInteger x = framePr.getX();
  STXAlign xAlign = framePr.getXAlign();
  BigInteger y = framePr.getY();
  STYAlign yAlign = framePr.getYAlign();
  STHeightRule hRule = framePr.getHRule();
 
  | 
 
编号属性
1 2 3 4 5 6 7 8 9 10
   |  PPrBase.NumPr numPr = pPr.getNumPr();
  PPrBase.NumPr.Ilvl ilvl = numPr.getIlvl();
  PPrBase.NumPr.NumId numId = numPr.getNumId();
  CTTrackChangeNumbering numberingChange = numPr.getNumberingChange();
  CTTrackChange ins = numPr.getIns();
 
  | 
 
段落边框
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   |  PPrBase.PBdr pBdr = pPr.getPBdr();
  CTBorder bar = pBdr.getBar();
  CTBorder between = pBdr.getBetween();
  CTBorder left = pBdr.getLeft();
  CTBorder right = pBdr.getRight();
  CTBorder top = pBdr.getTop();
  CTBorder bottom = pBdr.getBottom();
 
  | 
 
段落底纹
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   |  CTShd shd = pPr.getShd();
  STShd val = shd.getVal();
  String color = shd.getColor();
  STThemeColor themeColor = shd.getThemeColor();
  String themeTint = shd.getThemeTint();
  String themeShade = shd.getThemeShade();
  String fill = shd.getFill();
  STThemeColor themeFill = shd.getThemeFill();
  String themeFillTint = shd.getThemeFillTint();
  String themeFillShade = shd.getThemeFillShade();
 
  | 
 
自定义制表位集
1 2 3 4
   |  Tabs tabs = pPr.getTabs();
  List<CTTabStop> tab = tabs.getTab();
 
  | 
 
行距和段落上方/下段
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   |  PPrBase.Spacing spacing = pPr.getSpacing();
  BigInteger line = spacing.getLine();
  STLineSpacingRule lineRule = spacing.getLineRule();
  BigInteger spacingAfter = spacing.getAfter();
  BigInteger spacingBefore = spacing.getBefore();
  BigInteger afterLines = spacing.getAfterLines();
  BigInteger beforeLines = spacing.getBeforeLines();
 
  | 
 
段落缩进
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
   |  PPrBase.Ind ind = pPr.getInd();
  BigInteger left = ind.getLeft();
  BigInteger leftChars = ind.getLeftChars();
  BigInteger right = ind.getRight();
  BigInteger rightChars = ind.getRightChars();
  BigInteger hanging = ind.getHanging();
  BigInteger hangingChars = ind.getHangingChars();
  BigInteger firstLine = ind.getFirstLine();
  BigInteger firstLineChars = ind.getFirstLineChars();
 
  | 
 
段落对齐方式
1 2 3 4
   |  Jc jc = pPr.getJc();
  JcEnumeration val = jc.getVal();
 
  | 
 
段落文本流方向
1 2 3 4
   |  TextDirection textDirection = pPr.getTextDirection();
  String val = textDirection.getVal();
 
  | 
 
文本框紧密环绕
1 2 3 4
   |  CTTextboxTightWrap textboxTightWrap = pPr.getTextboxTightWrap();
  STTextboxTightWrap val3 = textboxTightWrap.getVal();
 
  | 
 
关联的大纲级别
1 2 3 4
   |  PPrBase.OutlineLvl outlineLvl = pPr.getOutlineLvl();
  BigInteger val = outlineLvl.getVal();
 
  | 
 
关联的 HTML div ID
1 2 3 4
   |  PPrBase.DivId divId = pPr.getDivId();
  BigInteger val = divId.getVal();
 
  | 
 
段落条件格式
1 2 3 4
   |  CTCnf cnfStyle = pPr.getCnfStyle();
  String val = cnfStyle.getVal();
 
  | 
 
3.4、P对象其他属性
| 属性 | 
说明 | 
| rsidDel (节删除修订 ID) | 
指定从文档中删除此节的节标记时用于跟踪 编辑会话 的唯一标识符。此文档中所有具有相等值的 rsid* 属性(如果存在)应指示这些区域在同一编辑会话期间已修改。创建者可以选择递增修订保存 ID 值,以指示后续编辑会话 (保存操作) 之间的编辑,以指示执行的保存顺序。此属性的可能值由 ST_LongHexNumber 简单类型 (§17.18.50) 定义。 | 
| rsidR (节添加修订 ID) | 
指定在将此节的节标记添加到文档时用于跟踪 编辑会话 的唯一标识符。此文档中所有具有相等值的 rsid* 属性(如果存在)应指示这些区域在同一编辑会话期间已修改。创建者可以选择递增修订保存 ID 值,以指示后续编辑会话 (保存操作) 之间的编辑,以指示执行的保存顺序。此属性的可能值由 ST_LongHexNumber 简单类型 (§17.18.50) 定义。 | 
| rsidRPr (物理节标记字符修订 ID) | 
指定上次格式化表示此节标记的物理字符时用于跟踪编辑会话的唯一标识符。此文档中所有具有相等值的 rsid* 属性(如果存在)应指示这些区域在同一编辑会话期间已修改。创建者可以选择递增修订保存 ID 值,以指示后续编辑会话 (保存操作) 之间的编辑,以指示执行的保存顺序。此属性的可能值由 ST_LongHexNumber 简单类型 (§17.18.50) 定义。 | 
| rsidSect (节属性 修订 ID) | 
指定上次格式化表示此节标记的物理字符时用于跟踪编辑会话的唯一标识符。此文档中所有具有相等值的 rsid* 属性(如果存在)应指示这些区域在同一编辑会话期间已修改。创建者可以选择递增修订保存 ID 值,以指示后续编辑会话 (保存操作) 之间的编辑,以指示执行的保存顺序。此属性的可能值由 ST_LongHexNumber 简单类型 (§17.18.50) 定义。 |