C#开发---Aspose.Word操作Word文档(一)

2023-11-16

目录

1.书签赋值

2.新起一行添加文本

3.查找文档内标题

4. 往pdf中插入目录


1.书签赋值

提前创建好word文档,插入书签,在程序中给书签赋值

        /// <summary>
        /// 书签赋值
        /// </summary>
        /// <param name="labelId">书签名</param>
        /// <param name="content"></param>
        public void WriteBookMark(string labelId, string content)
        {
            if (wordDoc.Range.Bookmarks[labelId] != null)
            {
                wordDoc.Range.Bookmarks[labelId].Text = content;
            }
        }

2.新起一行添加文本

 /// <summary>
/// 添加文本
/// </summary>
/// <param name="wordDoc"></param>
/// <param name="value">文字</param>
/// <param name="title">Heading 1/Heading 2/Normal</param>
/// <param name="alignment">对齐方式</param>
public void AddParagraph(string value, string title = "Normal", ParagraphAlignment alignment = ParagraphAlignment.Left)
{
    DocumentBuilder builder = new DocumentBuilder(wordDoc);
    builder.MoveToDocumentEnd();
    StyleCollection style = wordDoc.Styles;
    builder.ParagraphFormat.Style = style[title];
    builder.ParagraphFormat.Alignment = alignment;
    builder.Writeln(value);
}

3.查找文档内标题

    //记录word文档中标题信息,在pdf中制作目录
    public class PdfBookModel
    {
        public int level;//标题层级
        public string title;//标题文本
        public int page;//所在页码
        public List<PdfBookModel> child;//子标题
        public PdfBookModel()
        {
            child = new List<PdfBookModel>();
        }
    }
        /// <summary>
        /// 查找标题
        /// </summary>
        /// <param name="wordDoc"></param>
        /// <returns></returns>
        public List<PdfBookModel> GetTitle(Document wordDoc)
        {
            List<PdfBookModel> data = new List<PdfBookModel>();
            wordDoc.UpdateListLabels();
            Aspose.Words.Layout.LayoutCollector layout = new Aspose.Words.Layout.LayoutCollector(wordDoc);
            foreach (Section section in wordDoc.Sections)
            {
                foreach (Paragraph paragraph in section.Body.Paragraphs)
                {
                    string text = "";
                    int pageIndex = layout.GetEndPageIndex(paragraph);
                    foreach (Run run in paragraph.Runs)
                    {
                        text += run.Text;
                    }
                    if (text == "") continue;
                    string[] str = paragraph.ParagraphFormat.StyleName.Split(' ');
                    int level = -1;
                    try
                    { level = System.Convert.ToInt32(str[1]); }
                    catch
                    { continue; }
                    if (level < 0) continue;
                    PdfBookModel model = new PdfBookModel();
                    model.level = level;
                    model.title = text;
                    model.page = pageIndex;
                    if (level == 1)
                    {
                        data.Add(model);
                    }
                    else
                    {
                        GetChildTitle(data[data.Count - 1], model);
                    }
                }
            }
            return data;
        }
        private void GetChildTitle(PdfBookModel parent, PdfBookModel child)
        {
            if (parent.level + 1 == child.level)
            {
                parent.child.Add(child);
                return;
            }
            else
            {
                GetChildTitle(parent.child[parent.child.Count - 1], child);
            }
        }

4. 往pdf中插入目录

        /// <summary>
        /// 往pdf文件中插入目录
        /// </summary>
        /// <param name="pdfPath"></param>
        /// <param name="data"></param>
        public void PDFAddMark(List<PdfBookModel> data)
        {
            foreach (PdfBookModel item in data)
            {
                Aspose.Pdf.OutlineItemCollection outlineItem = new Aspose.Pdf.OutlineItemCollection(pdfDoc.Outlines);
                outlineItem.Title = item.title;
                outlineItem.Italic = true;
                outlineItem.Bold = true;
                outlineItem.Action = new Aspose.Pdf.InteractiveFeatures.GoToAction(item.page);
                pdfDoc.Outlines.Add(outlineItem);
                PDFAddChildMark(outlineItem, item);
            }
        }
        private void PDFAddChildMark(Aspose.Pdf.OutlineItemCollection Parent, PdfBookModel model)
        {
            if (model.child.Count > 0)
            {
                foreach (PdfBookModel item in model.child)
                {
                    Aspose.Pdf.OutlineItemCollection outlineItem = new Aspose.Pdf.OutlineItemCollection(pdfDoc.Outlines);
                    outlineItem.Title = item.title;
                    outlineItem.Italic = true;
                    outlineItem.Bold = true;
                    outlineItem.Action = new Aspose.Pdf.InteractiveFeatures.GoToAction(item.page);
                    Parent.Add(outlineItem);
                    PDFAddChildMark(outlineItem, item);
                }
            }
        }

5.将word转成图片

        /// <summary>
        /// 将word转成图片
        /// </summary>
        /// <returns></returns>
        public List<Image> ExportImages()
        {
            List<Image> images = new List<Image>();
            if (wordDoc == null) return images;
            ImageSaveOptions option = new ImageSaveOptions(SaveFormat.Png);
            option.PrettyFormat = true;
            for (int i = 0; i < wordDoc.PageCount; i++)
            {
                option.PageIndex = i;
                using (Stream stream = new MemoryStream())
                {
                    try
                    {
                        wordDoc.Save(stream, option);
                        images.Add(Image.FromStream(stream));
                    }
                    catch
                    {
                        continue;
                    }
                }
            }
            return images;
        }

Aspose.Word,Aspose.Pdf,插件 点击此处自取。提取码: aniv

Aspose.Word操作Word文档(二)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#开发---Aspose.Word操作Word文档(一) 的相关文章

随机推荐

  • 【STM32学习笔记】(1)—— STM32详解

    什么是STM32 STM32的字面含义 1 ST 代表着意法半导体公司 即由什么公司生产 意法半导体公司是一家SOC厂商 所谓SOC System on a Chip 根据它的中文意思可以知道 把系统都做在一个芯片上 如果在PC时代我们说一
  • 开放型 MODBUS-TCP规范(中文版)2

    导读 5 3 等级2指令详述 5 3 1 强制多点线圈 FC 15 请求 Byte 0 FC 0F 16进制 Byte 1 2 参考数值 Byte 3 4 比特数 1 800 Byte 5 字节数 B 比特数 7 8 Byte 6 B 5
  • Matlab计算完全消耗系数

    数据来源wiod 1 计算 clear clc eta cell 14 2 year 2000 2013 for i 1 14 eta i 2 1999 i end Type Sheet Fromat xlsfinfo F yida pro
  • 树莓派练习程序(避障模块)

    火焰检测模块如下 树莓派的引脚如下图 我们将Vcc引脚连接物理接口2 GND引脚连接物理接口39 DO引脚连接物理接口40 实物连接如下图 编程使用WiringPi库 使用wpi引脚编码方式控制GPIO 代码如下 include
  • 电路基础(3)电阻电路等效变换的经典例题

    1 R 2 求Rab的等效电阻 这个电路是个对称网络 若通过a b结点做一条中分线 中分线两侧的电路相同 d d d 三点的电位相同 2 求Rab的等效电阻 这个电路是双T网络 每个T形就是一个Y形联结 但两个Y形联结的中点电位一般不同 不
  • Jupyter Notebook打不开,点了后黑窗闪动了下

    版权声明 转载请注明作者 独孤尚良dugushangliang 出处 https blog csdn net dugushangliang article details 114667080 在程序菜单中双击Jupyter Notebook
  • Java API操作Hadoop可能会遇到的问题以及解决办法

    Could not locate Hadoop executable xxx bin winutils exe 1 2 3 4 5 6 Caused by java io FileNotFoundException Could not lo
  • RandomAccessFile类使用详解

    RandomAccessFile类使用详解 疯狂java讲义读书笔记之RandomAccessFile类的使用详解 1 RandomAccessFile特点 RandomAccessFile是java Io体系中功能最丰富的文件内容访问类
  • django_安装django-haystack报错_ERROR: Command errored out with exit status 1: python setup.py egg_info C

    问题描述 在阿里云服务器 Ubantu14 0 上安装django haystack报错 ERROR Command errored out with exit status 1 python setup py egg info Check
  • 手机通过RNDIS共享网络

    RNDIS 是 Remote Network Driver Interface Specification 远程网络驱动程序接口规范 的首字母缩写 实际上的作用为 TCP IP over USB 也即把 USB 设备 如手机 作为网卡 是基
  • 用Java开发贪食蛇小游戏

    用Java开发贪食蛇小游戏 一 实验内容 1 实现贪吃蛇游戏基本功能 屏幕上随机出现一个 食物 称为豆子 上下左右控制 蛇 的移动 吃到 豆子 以后 蛇 的身体加长一点 得分增加 蛇 碰到边界或 蛇头与蛇身相撞 蛇死亡 游戏结束 为游戏设计
  • Unity3D实现游戏暂停

    Unity3D实现游戏暂停 要素理解 代码 分析理解 要素理解 timeScale Float 默认值为1 能够影响时间流速 置0可使时间暂停 查阅官网文档 Time timeScale 中可以发现对于timeScale描述中要求暂停物体的
  • Hdu 1240 Asteroids题解

    题目链接 1240 思路 BFS搜索 采用队列实现 搜索的层级即为步数 代码如下 include
  • Linux虚拟环境安装cuda、cudnn、pytorch

    来自http t csdn cn WSvvX 1 创建虚拟环境 conda create n environment name 激活虚拟环境 conda cactivate environment name 2 安装cuda 首先查出源内所
  • 【Java】自建IOS应用(IPA)发布服务器

    简单描述一下总的过程 在某个后台上 版本发布平台 上传原始的ipa文件 解析ipa 主要是解析info plist 从中获取软件名 版本 icons等 解析embedded mobileprovision 获取证书过期时间 生成一个新的pl
  • 【限时免费】20天拿下华为OD笔试之【单调栈】2023Q1A-找朋友【欧弟算法】全网注释最详细分类最全的华为OD真题题解

    单调栈 2023Q1A 找朋友 题目描述与示例 题目描述 在学校中 N 个小朋友站成一队 第 i 个小朋友的身高为 height i 第 i 个小朋友可以看到的右边的第一个比自己身高更高的小朋友 j 那么 j 是 i 的好朋友 j gt i
  • SSH登录步骤

    SSH登录格式 ssh 用户名 ip地址 回车 比如 ssh root 0 0 0 1 如果需要切换用户 su 用户名 比如 su test1 从普通用户切换到root用户 可以使用sudo su 或 su
  • ingress是什么

    ingress是什么 需求 概念 详细说明 Ingress和Service的区别 注意点 需求 每个Service都要有一个负载均衡服务 所以这个做法实际上既浪费成本又高 作为用户 更希望看到Kubernetes为我内置一个全局的负载均衡器
  • 怎么制作睡袋rust_怎么不花钱自己在野外制作吊床—户外手工技能(吊床露营的好处)...

    当你想到露营的时候 你会想到什么形象 可能是帐篷 几十年来 帐篷和露营旅行确实已经密不可分 但最近这种感觉已经开始发生变化 因为出现了另一种露营方式 吊床 这样的吊床在中美洲和南美洲已经很常见了 但现在在设计和材料上经历了许多进步 越来越受
  • C#开发---Aspose.Word操作Word文档(一)

    目录 1 书签赋值 2 新起一行添加文本 3 查找文档内标题 4 往pdf中插入目录 1 书签赋值 提前创建好word文档 插入书签 在程序中给书签赋值