zoukankan      html  css  js  c++  java
  • Java 读取Word文本/段落格式属性

    本文介绍通过Java后端程序代码来读取Word文本和段落格式的方法。

    本次测试环境如下:

    • Word版本:2013
    • 编译环境:IntelliJ IDEA2018
    • Work库:free spire.doc.jar 3.9.0
    • JDK版本:1.8.0

    通过textrange.getCharacterFormat()方法读取文本字符串格式,通过paragraph.getFormat()读取段落格式,读取具体文字及段落属性时,可支持读取字体、字号、文字颜色、文字背景、文字是否加粗或倾斜、文字下划线、大小写、边框、上标下标、行距、段落缩进、对齐方式、段落边框、背景等等,下表中罗列了所有可支持读取的样式属性,供参考:

    读取文本格式 getCharacterFormat():

    方法

    类型

    getFontName()

    String

    getFontNameAscii()

    String

    getFontNameBidi()

    String

    getFontNameFarEast()

    String

    getFontNameNonFarEast()

    String

    getBold()

    boolean

    getFontSize()

    float

    getHighlightColor()

    Color

    getItalic()

    boolean

    getTextBackgroundColor()

    Color

    getTextColor()

    Color

    getAllCaps()

    boolean

    getAllowContextualAlternates()

    boolean

    getBidi()

    boolean

    getBoldBidi()

    boolean

    getBorder()

    Border

    getCharacterSpacing()

    float

    getDoubleStrike()

    boolean

    getEmboss()

    boolean

    getEmphasisMark()

    Emphasis

    getEngrave()

    boolean

    getFontSizeBidi()

    float

    getFontTypeHint()

    FontTypeHint

    getHidden()

    boolean

    getItalicBidi()

    boolean

    getLigaturesType()

    LigatureType

    getLocaleIdASCII()

    short

    getLocaleIdFarEast()

    short

    getNumberFormType()

    NumberFormType

    getNumberSpaceType()

    NumberSpaceType

    getPosition()

    float

    getStylisticSetType()

    StylisticSetType

    getSubSuperScript()

    SubSuperScript

    getTextScale()

    short

    getUnderlineStyle()

    UnderlineStyle

     

    读取段落格式:getFormat()

    方法

    类型

    getLineSpacing()

    float

    getFirstLineIndent()

    float

    getLeftIndent()

    float

    getAfterSpacing()

    float

    getBeforeSpacing()

    float

    getRightIndent()

    float

    getTextAlignment()

    TextAlignmnet

    getAfterAutoSpacing()

    boolean

    getAutoSpaceDE()

    boolean

    getAutoSpaceDN()

    boolean

    getBackColor()

    Color

    getBeforeAutoSpacing()

    boolean

    getBoders()

    Borders

    getHorizontalAlignment()

    HorizontalAlignmnet

    getKeepFollow()

    boolean

    getKeepLines()

    boolean

    getLineSpacingRule()

    LineSpacingRule

    getMirrorIndents()

    boolean

    getOutlineLevel()

    OutlineLevel

    getOverflowPunc()

    boolean

    getPageBreakAfter()

    boolean

    getPageBreakBefore()

    boolean

    getSuppressAutoHyphens()

    boolean

    getTabs()

    TabCollection

     

    用于测试的Word文档:

     

     

    Java示例代码

    import com.spire.doc.*;
    import com.spire.doc.documents.Paragraph;
    import com.spire.doc.documents.TextSelection;
    import com.spire.doc.fields.TextRange;
    
    import java.awt.*;
    
    public class GetTextFormat {
        public static void main(String[] args) {
            //加载Word源文档
            Document doc = new Document();
            doc.loadFromFile("test.docx");
    
            //获取段落数量
            int count = doc.getSections().get(0).getParagraphs().getCount();
            System.out.println("总共含有段落数:" + count);
    
            //查找指定文本
            TextSelection textSelections = doc.findString("东野圭吾", false, true);
            //获取字体名称
            String fontname = textSelections.getAsOneRange().getCharacterFormat().getFontName();
            //获取字体大小
            float fontsize = textSelections.getAsOneRange().getCharacterFormat().getFontSize();
            System.out.println("字体名称:" + fontname +"
    "
                +"字体大小:"+fontsize);
    
    
            //获取第二段
            Paragraph paragraph2 = doc.getSections().get(0).getParagraphs().get(1);
            //获取段落行距
            float linespage = paragraph2.getFormat().getLineSpacing();
            System.out.println("段落行距:" + linespage);
    
            //遍历段落中的子对象
            for (int z = 0; z < paragraph2.getChildObjects().getCount(); z++)
            {
                Object obj2 = paragraph2.getChildObjects().get(z);
    
                //判定是否为文本
                if (obj2 instanceof TextRange)
                {
                    TextRange textRange2 = (TextRange) obj2;
    
                    //获取文本颜色
                    Color textcolor = textRange2.getCharacterFormat().getTextColor();
                    if (!(textcolor.getRGB() == 0))
                    {
                        System.out.println("文本颜色:" + textRange2.getText() + textcolor.toString());
                    }
    
                    //获取字体加粗效果
                    boolean isbold = textRange2.getCharacterFormat().getBold();
                    if (isbold == true)
                    {
                        System.out.println("加粗文本:" + textRange2.getText());
                    }
    
                    //获取字体倾斜效果
                    boolean isitalic = textRange2.getCharacterFormat().getItalic();
                    if (isitalic == true)
                    {
                        System.out.println("倾斜文本:" + textRange2.getText());
                    }
    
                    //获取文本背景
                    String text = textRange2.getText();
                    Color highlightcolor = textRange2.getCharacterFormat().getHighlightColor();//获取文本的高亮颜色(即突出显示颜色)
                    if (!(highlightcolor.getRGB() == 0 ))
                    {
                        System.out.println("文本高亮:" + text + highlightcolor.toString());//输出高亮的文本和颜色
                    }
    
                    Color textbackgroundcolor = textRange2.getCharacterFormat().getTextBackgroundColor();//获取文字背景(底纹)
                    if (!(textbackgroundcolor.getRGB()==0))
                    {
                        System.out.println("文本背景:" + text + textbackgroundcolor.toString());//输出有背景的文本和颜色
                    }
    
                }
            }
    
        }
    }

    运行程序,输入获取结果:

     

     

     

     

     

  • 相关阅读:
    5G NR系列(四)物理下行共享信道(PDSCH)物理层过程详解
    5G NR系列(三)PDSCH的解调参考信号(DM-RS)
    Mac上重装pycharm打不开的解决方法
    Oracle parallel理解
    V$ASM_DISKGROUP视图信息解读
    深入了解 Oracle Flex ASM 及其优点
    使用typora和印象笔记高效输出
    Centos7.6部署k8s 集群
    DBA日常职责
    利用DCLI命令实现跨机器检查
  • 原文地址:https://www.cnblogs.com/Yesi/p/14605280.html
Copyright © 2011-2022 走看看