合并多个rtf文件

2024-09-01 01:20
文章标签 多个 合并 rtf

本文主要是介绍合并多个rtf文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 合并多个rtf文件,有2个细节:

1、不同文件之间加分页

2、编号的处理

选择一个目录

        private void BtnImportingDirectoryBrowse_Click(object sender, EventArgs e){if (FbdlgDirectory.ShowDialog() == DialogResult.OK){textBox1.Text = FbdlgDirectory.SelectedPath;string dir = textBox1.Text.Trim();if (System.IO.Directory.Exists(dir)){string rtf_fn = dir + ".rtf";merge_RTF(dir, rtf_fn);MessageBox.Show("Save to " + rtf_fn);}}}

合并

        private void merge_RTF(string dir,string rtf_fn){string[] ss = System.IO.Directory.GetFiles(dir, "*.rtf");List<string> files = new List<string>();files.AddRange(ss);files.Sort();int p_Count = 0;for (int idx=0; idx < files.Count; idx++){if (idx == 0){richEditControl1.LoadDocument(files[idx]);p_Count = richEditControl1.Document.Paragraphs.Count;}else{string rtf = System.IO.File.ReadAllText(files[idx]);char pageBreakChar = (char)12;richEditControl1.Document.BeginUpdate();richEditControl1.Document.AppendText(  pageBreakChar.ToString()); DocumentRange range= richEditControl1.Document.AppendRtfText(rtf) ;richEditControl1.Document.EndUpdate();richEditControl1.Document.BeginUpdate();ParagraphCollection paragraphs = richEditControl1.Document.Paragraphs;int c= paragraphs.Count;if (c >= p_Count){NumberingList numberingList = null;for (int i = p_Count - 1; i < c; i++){Paragraph pgf = paragraphs[i]; if (pgf.IsInList){if (numberingList == null){NumberingList old = richEditControl1.Document.NumberingLists[pgf.ListIndex];numberingList = richEditControl1.Document.NumberingLists.Add(old.AbstractNumberingListIndex);numberingList.NumberingType = old.NumberingType;//numberingList.Levels[0].NewStart = 0;numberingList.Levels[0].SetOverrideStart(true);numberingList.Levels[0].NewStart = 1;pgf.ListIndex = numberingList.Index;}else{pgf.ListIndex = numberingList.Index;}}else{numberingList = null;}}p_Count = c;}richEditControl1.Document.EndUpdate();} }NumberingListCollection nl = richEditControl1.Document.NumberingLists;foreach (NumberingList n in nl){}richEditControl1.Document.SaveDocument(rtf_fn, DocumentFormat.Rtf); }

插入分页

                    char pageBreakChar = (char)12;
                    richEditControl1.Document.BeginUpdate();
                    richEditControl1.Document.AppendText(  pageBreakChar.ToString()); 
                    DocumentRange range= richEditControl1.Document.AppendRtfText(rtf) ;
                    richEditControl1.Document.EndUpdate();

编号的处理,遍历所有 numberingList 判断位置 ,处理编号 SetOverrideStart , NewStart = 1

                     ParagraphCollection paragraphs = richEditControl1.Document.Paragraphs;
                    int c= paragraphs.Count;
                    if (c >= p_Count)
                    {
                        NumberingList numberingList = null;
                        for (int i = p_Count - 1; i < c; i++)
                        {
                            Paragraph pgf = paragraphs[i]; 
                            if (pgf.IsInList)
                            {
                                if (numberingList == null)
                                {
                                    NumberingList old = richEditControl1.Document.NumberingLists[pgf.ListIndex];

                                    numberingList = richEditControl1.Document.NumberingLists.Add(old.AbstractNumberingListIndex);
                                    numberingList.NumberingType = old.NumberingType;
                                    //numberingList.Levels[0].NewStart = 0;
                                    numberingList.Levels[0].SetOverrideStart(true);
                                    numberingList.Levels[0].NewStart = 1;
                                    pgf.ListIndex = numberingList.Index;
                                }
                                else
                                {
                                    pgf.ListIndex = numberingList.Index;
                                }
                            }
                            else
                            {
                                numberingList = null;
                            }
                        }

                        p_Count = c;
                    }

这篇关于合并多个rtf文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125543

相关文章

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh

使用Apache POI在Java中实现Excel单元格的合并

《使用ApachePOI在Java中实现Excel单元格的合并》在日常工作中,Excel是一个不可或缺的工具,尤其是在处理大量数据时,本文将介绍如何使用ApachePOI库在Java中实现Excel... 目录工具类介绍工具类代码调用示例依赖配置总结在日常工作中,Excel 是一个不可或缺的工http://