段落-设置缩进方式

白杨_baiyang
• 阅读 33

在word中,段落可以设置的缩进有左缩进、右缩进、首行缩进悬挂缩进。 Spire.Doc提供了 ParagraphFormat 类用于处理段落格式。您可以使用 Paragraph.getFormat() 方法获取 ParagraphFormat 类的对象,然后使用下面的方法设置对应的段落缩进: |缩进方式|方法|方法解释| |-|-|-| |左缩进|ParagraphFormat.setLeftIndent(float value)|根据设置的缩进量使段落从左边缩进| |右缩进|ParagraphFormat.setRightIndent(float value)|根据设置的缩进量使段落从右边缩进| |首行缩进|ParagraphFormat.setFirstLineIndent(float value)|将段落的第一行缩进| |悬挂缩进|ParagraphFormat.setFirstLineIndent(float negativeValue)|将段落的第一行置于页边空白处,然后缩进该段后面的每一行| ::: tip Spire.Doc中首行缩进和悬挂缩进用的是同一个方法,通过传入的参数值正负来决定是首行缩进还是悬挂缩进(正值:首行缩进;负值:悬挂缩进)。缩进值的单位是 。 ::: ::: warning 在实际的使用过程中,如果对段落设置悬挂缩进时(即传入负值),需要同时设置段落左缩进,缩进值为悬挂缩进的正值。 :::

示例代码

public void indentParagraph() {
        // 段落内容
        String content = "山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,阅金经。无丝竹之乱耳,无案牍之劳形。南阳诸葛庐,西蜀子云亭。孔子云:何陋之有?";

        // 创建Document类的实例
        Document document= new Document();

        // 创建Section类的实例
        Section section = document.addSection();

        // 创建第一段,不设置段落缩进
        Paragraph noStyleParagraph = section.addParagraph();
        // 设置段落内容
        setFontStyle(noStyleParagraph.appendText(content));

        // 设置一个空段落
        section.addParagraph();

        // 创建第二段,设置左缩进
        Paragraph leftIndentParagraph = section.addParagraph();
        // 设置段落内容
        setFontStyle(leftIndentParagraph.appendText(content));
        // 设置左缩进
        leftIndentParagraph.getFormat().setLeftIndent(20);

        // 设置一个空段落
        section.addParagraph();

        // 创建第三段,设置右缩进
        Paragraph rightIndentParagraph = section.addParagraph();
        // 设置段落内容
        setFontStyle(rightIndentParagraph.appendText(content));
        // 设置右缩进
        rightIndentParagraph.getFormat().setRightIndent(20);

        // 设置一个空段落
        section.addParagraph();

        // 创建第四段,设置首行缩进
        Paragraph firstLineIndentParagraph = section.addParagraph();
        // 设置段落内容
        setFontStyle(firstLineIndentParagraph.appendText(content));
        // 设置首行缩进
        firstLineIndentParagraph.getFormat().setFirstLineIndent(20);

        // 设置一个空段落
        section.addParagraph();

        // 创建第五段,设置悬挂缩进
        Paragraph hangIndentParagraph = section.addParagraph();
        // 设置段落内容
        setFontStyle(hangIndentParagraph.appendText(content));
        // 设置悬挂缩进
        hangIndentParagraph.getFormat().setFirstLineIndent(-20);

        // 设置一个空段落
        section.addParagraph();

        // 创建第六段,设置悬挂缩进同时设置左缩进
        Paragraph leftHangIndentParagraph = section.addParagraph();
        // 设置段落内容
        setFontStyle(leftHangIndentParagraph.appendText(content));
        // 设置悬挂缩进和左缩进
        leftHangIndentParagraph.getFormat().setFirstLineIndent(-20);
        leftHangIndentParagraph.getFormat().setLeftIndent(20);

        document.saveToFile("E:/test/IndentParagraph.docx", FileFormat.Docx_2013);
    }

    public void setFontStyle(TextRange tr) {
        tr.getCharacterFormat().setFontName("宋体");
        tr.getCharacterFormat().setFontSize(10);
    }

输出结果

段落-设置缩进方式 从输出结果可以看出,除了悬挂缩进之外的其他缩进设置和word中段落样式设置的结果是一致的。但是只设置悬挂缩进的时候,段落的第一行向左移,其他行的起始位置和无缩进段落的起始位置一致,如果在word中打开第五段的段落设置: 段落-设置缩进方式 可以看到缩进样式中设置了左缩进-20磅,悬挂缩进20磅,意思是Spire.Doc在处理悬挂缩进时,会先将段落整体左移,然后再缩进除了第一行之外的其他行,从而实现悬挂缩进的效果,而这个样式和word中设置悬挂缩进的样式不一致,所以需要同时设置左缩进值对冲掉Spire.Doc设置的左缩进值,于是最后一段的结果是符合预期的。

点赞
收藏
评论区
推荐文章

暂无数据

白杨_baiyang
白杨_baiyang
Lv1
且将新火试新茶,诗酒趁年华。
0
文章
0
粉丝
0
获赞
热门文章

暂无数据