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

相关文章

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://

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例