Spire.Doc修改目录字体大小

news/2024/7/8 4:30:30

官方论坛

官方论坛的解决方案:

   static void Main(string[] args)
    {
        Document doc = new Document();
        doc.LoadFromFile("目录.docx");
        foreach (Section section in doc.Sections)
        {
            //遍历body下面所有对象
            foreach (DocumentObject obj in section.Body.ChildObjects)
            {
                if (obj is Paragraph)
                {
                    Paragraph para = obj as Paragraph;
                    //通过样式名来确定是否是目录文本
                    switch(para.StyleName){
                        //一级标题
                        case "TOC1":
                            ChangeFont(para, "黑体", 14);
                            break;
                        //二级标题
                        case "TOC2":
                            ChangeFont(para, "黑体", 12);
                            break;
                        //三级标题
                        case "TOC3":
                            ChangeFont(para, "黑体", 10);
                            break;
                        //其余级别类推
                    }
                }
            }
        }
        doc.SaveToFile("结果.docx", FileFormat.Docx);
    }

    public static void ChangeFont(Paragraph para, string fontName, int fontSize)
    {
        foreach (DocumentObject obj in para.ChildObjects)
        {
            //如果对象类型为TextRange
            if (obj.DocumentObjectType == DocumentObjectType.TextRange)
            {
                TextRange tr = (TextRange)obj;
                //更改字体和文字大小
                tr.CharacterFormat.FontName = fontName;
                tr.CharacterFormat.FontSize = fontSize;
            }
        }
    }

但是我发现这样不行,稍微改了一下:

   static void Main(string[] args)
    {
        Document doc = new Document();
        doc.LoadFromFile("目录.docx");
        foreach (Section section in doc.Sections)
        {
            //遍历body下面所有对象
            foreach (DocumentObject obj in section.Body.ChildObjects)
            {
                if (obj is Paragraph)
                {
                    Paragraph para = obj as Paragraph;
					for (DocumentObject tr : (Iterable<? extends DocumentObject>) para.getChildObjects()) {
                        if (tr.getDocumentObjectType() == DocumentObjectType.TOC || 		tr.getDocumentObjectType() == DocumentObjectType.Field) {
                            ChangeFont(para,"黑体",14);
                        }
                }
            }
        }
        doc.SaveToFile("结果.docx", FileFormat.Docx);
    }

    public static void ChangeFont(Paragraph para, string fontName, int fontSize)
    {
        foreach (DocumentObject obj in para.ChildObjects)
        {
            //如果对象类型为TextRange
            if (obj.DocumentObjectType == DocumentObjectType.TextRange)
            {
                TextRange tr = (TextRange)obj;
                //更改字体和文字大小
                tr.CharacterFormat.FontName = fontName;
                tr.CharacterFormat.FontSize = fontSize;
            }
        }
    }

http://www.niftyadmin.cn/n/4556916.html

相关文章

分布式的演练、Zookeeper基本概念(一)

1、从集中式到分布式 在20世纪60年代大型主机被发明出来之后&#xff0c;凭借其超强的计算和io处理能力以及在稳定型和安全性方面的卓越表现&#xff0c;在很长的一段时间内&#xff0c;大型主机引领了计算机行业以及商业计算领域的发展&#xff0c;在大型主机的研发上最知名的…

C语言一共有哪32个关键字

声明无类型指针&#xff08;基本上就这三个作用&#xff09; default&#xff1a;开关语句中的“其他”分支 goto&#xff1a;无条件跳转语句 sizeof&#xff1a;计算数据类型长度 volatile&#xff1a;说明变量在程序执行中可被隐含地改变 do &#xff1a;循环语句的循环体 wh…

Zookeeper安装、常用命令(二)

1、安装 1.1、需要环境jdk 1.2、解压 tar -zxvf zookeeper-3.4.6.tar.gz mv zookeeper-3.4.6/ zookeeper1.3、更名 cd /usr/local/zookeeper/conf cp zoo_sample.cfg zoo.cfg1.4、创建文件 mkdir -p /usr/local/datas/zookeeper mkdir -p /usr/local/logs/zookeeper1.5、…

在linux中根据pid杀死所有子进程/后代进程

杀死所有子进程&#xff1a; pkill -P $$$$ 为 目标 pid 另一种情况是你可能想要杀死当前 shell 进程的所有后代以及直接子进程。在这种情况下&#xff0c;你可以使用下面的递归 shell 函数列出所有后代 PID&#xff0c;然后将它们作为参数传递给 kill&#xff1a; list_des…

apt-get 常用命令总结

apt-get 高级包装工具&#xff08;英语&#xff1a;Advanced Packaging Tools,简称&#xff1a;APT&#xff09;是Debian及其衍生发行版&#xff08;如&#xff1a;ubuntu&#xff09;的软件包管理器。APT可以自动下载&#xff0c;配置&#xff0c;安装二进制或者源代码格式的…

Zookeeper JAVA 原生 API 超详细(三)

1、pom文件 <dependencies><!--zookeeper--><!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper--><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><vers…

Python之二维列表行转列

主要有三种方法&#xff1a; 方法一&#xff1a;双层遍历 #encodingutf-8 """ 功能&#xff1a;列表的行转列【三种方法】 """ #二维阵列变换 行转化成列&#xff0c;列转化成行 lista[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] #方法一&#x…

用VB和易语言应该怎么写生成文件

#图片&#xff09;‘图片是DLL的数据删除33.dll删除文件&#xff08;"C:/Program Files/Tencent/DNF/start/33.dll"&#xff09; VB语言:生成一个文件33.dll:open "C:/Program Files/Tencent/DNF/start/33.dll" for output as #1close #1删除33.dllkill &q…