Docx4j开发手册-4|Docx4j的文本级别信息

4.1、获取文本信息

文本的样式信息,应该从P对象的Content集合,过滤出R对象,获取R对象的RPr属性。

image-20231206103005154

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 加载 DOCX 文件
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new File("D:/xxx.docx"));
List<Object> content = wordMLPackage.getMainDocumentPart().getContent();

// 获取文本信息
StringBuilder str = new StringBuilder();
for (Object o : content) {
str.append(TextUtils.getText(o));
}

// 获取文本样式
for (Object o : content) {
if (o instanceof P){
P p = (P) o;
List<Object> pContent = p.getContent();
for (Object object : pContent) {
if (object instanceof R){
R r = (R) object;
RPr rPr = r.getRPr();
}
}
}
}

4.2、文本样式信息

image-20231206103013955image-20231206103016609

Rpr之大,一图放不下。。。

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
// 粗体
BooleanDefaultTrue b = rPr.getB();
// 复杂脚本粗体
BooleanDefaultTrue bCs = rPr.getBCs();
// 斜体
BooleanDefaultTrue i = rPr.getI();
// 复杂脚本斜体
BooleanDefaultTrue iCs = rPr.getICs();
// 将所有字符显示为大写字母
BooleanDefaultTrue caps = rPr.getCaps();
// 将所有字符显示为小写字母
BooleanDefaultTrue smallCaps = rPr.getSmallCaps();
// 单删除线
BooleanDefaultTrue strike = rPr.getStrike();
// 双删除线
BooleanDefaultTrue dstrike = rPr.getDstrike();
// 显示字符轮廓
BooleanDefaultTrue outline = rPr.getOutline();
// 阴影
BooleanDefaultTrue shadow = rPr.getShadow();
// 浮雕
BooleanDefaultTrue emboss = rPr.getEmboss();
// 印记
BooleanDefaultTrue imprint = rPr.getImprint();
// 不检查拼写或语法
BooleanDefaultTrue noProof = rPr.getNoProof();
// 使用文档网格设置实现字符间距
BooleanDefaultTrue snapToGrid = rPr.getSnapToGrid();
// 隐藏文本
BooleanDefaultTrue vanish = rPr.getVanish();
// Web 隐藏文本
BooleanDefaultTrue webHidden = rPr.getWebHidden();
// 从右到左文本
BooleanDefaultTrue rtl = rPr.getRtl();
// 运行时使用复杂的脚本格式
BooleanDefaultTrue cs = rPr.getCs();
// 段落标记始终处于隐藏状态
BooleanDefaultTrue specVanish = rPr.getSpecVanish();
// Office Open XML 数学
BooleanDefaultTrue oMath = rPr.getOMath();

引用的字符样式

1
2
3
4
// 引用的字符样式
RStyle rStyle = rPr.getRStyle();
//
String val = rStyle.getVal();

引用字符样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 引用字符样式
RFonts rFonts = rPr.getRFonts();
// 字体内容类型。表示架构中的以下属性:w:hint
STHint hint = rFonts.getHint();
// ASCII字体。表示架构中的以下属性:w:ascii
String ascii = rFonts.getAscii();
// 高ANSI字体。表示架构中的以下属性:w:hAnsi
String hAnsi = rFonts.getHAnsi();
// 东亚字体。表示架构中的以下属性:w:eastAsia
String eastAsia = rFonts.getEastAsia();
// 复杂脚本字体。表示架构中的以下属性:w:cs
String cs = rFonts.getCs();
// ASCII 主题字体。表示架构中的以下属性:w:asciiTheme
STTheme asciiTheme = rFonts.getAsciiTheme();
// 高 ANSI 主题字体。表示架构中的以下属性:w:hAnsiTheme
STTheme hAnsiTheme = rFonts.getHAnsiTheme();
// 东亚主题字体。表示架构中的以下属性:w:eastAsiaTheme
STTheme eastAsiaTheme = rFonts.getEastAsiaTheme();
// 复杂脚本主题字体。表示架构中的以下属性:w:cstheme
STTheme cstheme = rFonts.getCstheme();

颜色

1
2
3
4
5
6
7
8
9
10
// 颜色。 表示架构中的以下元素标记:w:color
Color color = rPr.getColor();
// 运行架构中的内容的主题 Color.Represents 以下属性: w:themeColor
STThemeColor themeColor = color.getThemeColor();
// 运行架构中的内容的主题颜色 Shade.Represents 以下属性: w:themeShade
String themeShade = color.getThemeShade();
// 运行架构中的内容的主题颜色 Tint.Represents 以下属性: w:themeTint
String themeTint = color.getThemeTint();
// 运行架构中的内容 Color.Represents 以下属性: w:val
String val1 = color.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
31
32
33
34
35
36
37
// 间距。 表示架构中的以下元素标记:w:spacing
CTSignedTwipsMeasure spacing = rPr.getSpacing();
// val (正值或负值(以磅) 的二十分之一为单位)
BigInteger val = spacing.getVal();

// 扩展压缩文本。拉伸或压缩运行中的每个字符。 表示架构中的以下元素标记:w:w
CTTextScale w = rPr.getW();
//
Integer val = w.getVal();

// 字体字距。表示架构中的以下元素标记:w:kern
HpsMeasure kern = rPr.getKern();
//
BigInteger val = kern.getVal();

// 位置 (垂直凸起或降低的文本)
// 如果 val 属性为正,则父运行应以指定的半点数提升到周围文本的基线之上。 如果 val 属性为负数,则父运行应按指定的半点数降低到周围文本的基线以下。
CTSignedHpsMeasure position = rPr.getPosition();
//
BigInteger val = position.getVal();

// 非复杂脚本字体大小
HpsMeasure sz = rPr.getSz();
// val 属性指定的字体大小表示为半点值。
BigInteger val = sz.getVal();

// 复杂脚本字号
HpsMeasure szCs = rPr.getSzCs();
// val 属性指定的字体大小表示为半点值。
BigInteger val = szCs.getVal();

// 突出显示 (文本突出显示、高亮)
Highlight highlight = rPr.getHighlight();
// 突出显示的颜色。表示架构中的以下属性:w:val
String val = highlight.getVal();
// 十六进制颜色代码
String hexVal = highlight.getHexVal();

下划线

1
2
3
4
5
6
7
8
9
10
11
12
// 下划线
U u = rPr.getU();
// 枚举类UnderlineValues
UnderlineEnumeration val = u.getVal();
// 运行架构中的内容的主题 u.Represents 以下属性: w:themeColor
STThemeColor themeColor = u.getThemeColor();
// 运行架构中的内容的主题颜色 Shade.Represents 以下属性: w:themeShade
String themeShade = u.getThemeShade();
// 运行架构中的内容的主题颜色 Tint.Represents 以下属性: w:themeTint
String themeTint = u.getThemeTint();
// 运行架构中的内容 u.Represents 以下属性: w:val
String color = u.getColor();

文本影响

1
2
3
4
// 文本影响
CTTextEffect effect = rPr.getEffect();
// 枚举类
STTextEffect val = effect.getVal();

文本边框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 文本边框
CTBorder bdr = rPr.getBdr();
// 边框样式.表示架构中的以下属性:w:val
STBorder val = bdr.getVal();
// 边框颜色。表示架构中的以下属性:w:color
String color = bdr.getColor();
// 边框主题颜色。表示架构中的以下属性:w:themeColor
STThemeColor themeColor = bdr.getThemeColor();
// 边框主题颜色 Tint.表示架构中的以下属性:w:themeTint
String themeTint = bdr.getThemeTint();
// 边框主题颜色阴影。表示架构中的以下属性:w:themeShade
String themeShade = bdr.getThemeShade();
// 边框宽度。表示架构中的以下属性:w:sz
BigInteger sz = bdr.getSz();

段落底纹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 段落底纹
CTShd shd = rPr.getShd();
// 着色模式。表示架构中的以下属性:w:val
STShd val = shd.getVal();
// 底纹图案颜色。表示架构中的以下属性:w:color
String color = shd.getColor();
// 底纹图案主题颜色。表示架构中的以下属性:w:themeColor
STThemeColor themeColor = shd.getThemeColor();
// 底纹图案主题颜色淡化。表示架构中的以下属性:w:themeTint
String themeTint = shd.getThemeTint();
// 底纹图案主题颜色阴影。表示架构中的以下属性:w:themeShade
String themeShade = shd.getThemeShade();
// 底纹背景色。表示架构中的以下属性:w:fill
String fill = shd.getFill();
// 底纹背景主题颜色。表示架构中的以下属性:w:themeFill
STThemeColor themeFill = shd.getThemeFill();
// 底纹背景主题颜色淡色。表示架构中的以下属性:w:themeFillTint
String themeFillTint = shd.getThemeFillTint();
// 底纹背景主题颜色阴影。表示架构中的以下属性:w:themeFillShade
String themeFillShade = shd.getThemeFillShade();

手动运行宽度

1
2
3
4
5
6
// 手动运行宽度
CTFitText fitText = rPr.getFitText();
// Value.表示架构中的以下属性:w:val
BigInteger val = fitText.getVal();
// 拟合文本运行 ID。表示架构中的以下属性:w:id
BigInteger id = fitText.getId();

下标/上标文本

1
2
3
4
// 下标/上标文本
CTVerticalAlignRun vertAlign = rPr.getVertAlign();
// 枚举[baseline、superscript、subscript]
STVerticalAlignRun val = vertAlign.getVal();

强调标记

1
2
3
4
// 强调标记
CTEm em = rPr.getEm();
// 枚举[none、dot、comma、circle、underDot]
STEm val = em.getVal();

用于运行内容的语言

1
2
3
4
5
6
7
8
// 用于运行内容的语言
CTLanguage lang = rPr.getLang();
// 拉丁语。表示架构中的以下属性:w:val
String val = lang.getVal();
// 东亚语言。表示架构中的以下属性:w:eastAsia
String eastAsia = lang.getEastAsia();
// 复杂脚本语言。表示架构中的以下属性:w:bidi
String bidi = lang.getBidi();

应用于运行内容的任何东亚版式设置

1
2
3
4
5
6
// 应用于运行内容的任何东亚版式设置
CTEastAsianLayout eastAsianLayout = rPr.getEastAsianLayout();
// 东亚版式运行 ID。表示架构中的以下属性:w:id
BigInteger id = eastAsianLayout.getId();
// 枚举 [none、round、square、angle、curly]
STCombineBrackets combineBrackets = eastAsianLayout.getCombineBrackets();

辉光

1
2
3
4
5
6
7
8
// 辉光
CTGlow glow = rPr.getGlow();
// 发光半径
Long rad = glow.getRad();
// Rgb颜色模型十六进制
CTSRgbColor srgbClr = glow.getSrgbClr();
// 方案颜色
CTSchemeColor schemeClr = glow.getSchemeClr();

阴影

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 阴影
CTShadow shadow14 = rPr.getShadow14();
//Rgb颜色模型十六进制
CTSRgbColor srgbClr = shadow14.getSrgbClr();
// 方案颜色
CTSchemeColor schemeClr = shadow14.getSchemeClr();
// 模糊半径
Long blurRad = shadow14.getBlurRad();
// 与文本的距离
Long dist = shadow14.getDist();
// 方向角
Integer dir = shadow14.getDir();
// 水平缩放因子
Integer sx = shadow14.getSx();
// 垂直比例因子
Integer sy = shadow14.getSy();
// 水平倾斜角度
Integer kx = shadow14.getKx();
// 垂直倾斜角度
Integer ky = shadow14.getKy();
// 对齐
STRectAlignment algn = shadow14.getAlgn();

反射

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
// 反射
CTReflection reflection = rPr.getReflection();
// 模糊半径
Long blurRad = reflection.getBlurRad();
// 开始不透明度
Integer stA = reflection.getStA();
// 起始位置
Integer stPos = reflection.getStPos();
// 结束不透明度
Integer endA = reflection.getEndA();
// 结束位置
Integer endPos = reflection.getEndPos();
// 与文本的距离
Long dist = reflection.getDist();
// 方向角
Integer dir = reflection.getDir();
// 淡入淡出方向
Integer fadeDir = reflection.getFadeDir();
// 水平缩放因子
Integer sx = reflection.getSx();
// 垂直比例因子
Integer sy = reflection.getSy();
// 水平倾斜角度
Integer kx = reflection.getKx();
// 垂直倾斜角度
Integer ky = reflection.getKy();
// 对齐
STRectAlignment algn = reflection.getAlgn();

应用于文本的大纲样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
应用于文本的大纲样式// 应用于文本的大纲样式
CTTextOutlineEffect textOutline = rPr.getTextOutline();
// 无
CTEmpty noFill = textOutline.getNoFill();
//
CTSolidColorFillProperties solidFill = textOutline.getSolidFill();
//
CTGradientFillProperties gradFill = textOutline.getGradFill();
//
CTPresetLineDashProperties prstDash = textOutline.getPrstDash();
//
CTEmpty round = textOutline.getRound();
//
CTEmpty bevel = textOutline.getBevel();
// 文本轮廓的宽度
Integer w = textOutline.getW();
// 文本轮廓的端点样式[FLAT、ROUND、SQUARE]
STLineCap cap = textOutline.getCap();
// 文本轮廓的连接方式[BEVEL、MITER、ROUND]
STCompoundLine cmpd = textOutline.getCmpd();
// 文本轮廓与文本的对齐方式
STPenAlignment algn = textOutline.getAlgn();

文本填充

1
2
3
4
5
6
7
8
// 文本填充
CTFillTextEffect textFill = rPr.getTextFill();
// 渐变填充特性
CTGradientFillProperties gradFill = textFill.getGradFill();
// 无填充空
CTEmpty noFill = textFill.getNoFill();
// 纯色填充特性
CTSolidColorFillProperties solidFill = textFill.getSolidFill();

场景3d

1
2
3
4
5
6
// 场景3d
CTScene3D scene3D = rPr.getScene3D();
// 相机。 表示架构中的以下元素标记:w14:camera
CTCamera camera = scene3D.getCamera();
// 灯光装置。 表示架构中的以下元素标记:w14:lightRig
CTLightRig lightRig = scene3D.getLightRig();

3D属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 3D属性
CTProps3D props3D = rPr.getProps3D();
// 斜面底部
CTBevel bevelT = props3D.getBevelT();
// 斜面顶部
CTBevel bevelB = props3D.getBevelB();
// 延伸颜色。 表示架构中的以下元素标记:w14:extrusionClr
CTColor extrusionClr = props3D.getExtrusionClr();
// 轮廓颜色。 表示架构中的以下元素标记:w14:contourClr
CTColor contourClr = props3D.getContourClr();
// 挤出高度。表示架构中的以下属性:w14:extrusionH
Long extrusionH = props3D.getExtrusionH();
// 轮廓宽度。表示架构中的以下属性:w14:contourW
Long contourW = props3D.getContourW();
// 预设材料类型。表示架构中的以下属性:w14:prstMaterial
STPresetMaterialType prstMaterial = props3D.getPrstMaterial();

连字

1
2
3
4
// 连字
CTLigatures ligatures = rPr.getLigatures();
// 枚举值
STLigatures val = ligatures.getVal();

编号格式

1
2
3
4
// 编号格式
CTNumForm numForm = rPr.getNumForm();
// 枚举值
STNumForm val = numForm.getVal();

编号间距

1
2
3
4
// 编号间距
CTNumSpacing numSpacing = rPr.getNumSpacing();
// 枚举值
STNumSpacing val = numSpacing.getVal();

样式集

1
2
3
4
// 样式集
CTStylisticSets stylisticSets = rPr.getStylisticSets();
//
List<CTStyleSet> styleSet = stylisticSets.getStyleSet();

上下文替代方案

1
2
3
4
// 上下文替代方案
CTOnOff cntxtAlts = rPr.getCntxtAlts();
//
String val = cntxtAlts.getVal();

(运行属性) 的修订信息

1
2
3
4
5
6
7
8
9
10
// (运行属性) 的修订信息
CTRPrChange rPrChange = rPr.getRPrChange();
// 注释标识符。表示架构中的以下属性:w:id
BigInteger id = rPrChange.getId();
// 作者。表示架构中的以下属性:w:author
String author = rPrChange.getAuthor();
// 日期。表示架构中的以下属性:w:date
XMLGregorianCalendar date = rPrChange.getDate();
//
CTRPrChange.RPr rPr = rPrChange.getRPr();