合并多个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

相关文章

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

pandas数据的合并concat()和merge()方式

《pandas数据的合并concat()和merge()方式》Pandas中concat沿轴合并数据框(行或列),merge基于键连接(内/外/左/右),concat用于纵向或横向拼接,merge用于... 目录concat() 轴向连接合并(1) join='outer',axis=0(2)join='o

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

使用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