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

相关文章

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

基于C#实现PDF文件合并工具

《基于C#实现PDF文件合并工具》这篇文章主要为大家详细介绍了如何基于C#实现一个简单的PDF文件合并工具,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下... 界面主要用于发票PDF文件的合并。经常出差要报销的很有用。代码using System;using System.Col

Python视频剪辑合并操作的实现示例

《Python视频剪辑合并操作的实现示例》很多人在创作视频时都需要进行剪辑,本文主要介绍了Python视频剪辑合并操作的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录介绍安装FFmpegWindowsMACOS安装MoviePy剪切视频合并视频转换视频结论介绍

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

struts2中的json返回指定的多个参数

要返回指定的多个参数,就必须在struts.xml中的配置如下: <action name="goodsType_*" class="goodsTypeAction" method="{1}"> <!-- 查询商品类别信息==分页 --> <result type="json" name="goodsType_findPgae"> <!--在这一行进行指定,其中lis是一个List集合,但

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬