C#代码实现在Word文档页面中添加装订线

 更新时间:2026年01月22日 08:16:01   作者:2501_93070778  
在 Word 文档页面中添加装订线,可以有效提升文档的专业性和整体美观度,本文将介绍如何在 C# 项目中使用 Spire.Doc for .NET 为 Word 文档页面添加装订线,感兴趣的小伙伴可以了解下

在 Word 文档页面中添加装订线,可以有效提升文档的专业性和整体美观度。装订线不仅能让文档看起来更加整洁、有条理,还能在打印时作为参考标记,方便读者快速浏览和查阅内容。通过在页面中设置装订线,可以模拟纸质文档中常见的装订边效果,使电子文档更具“印刷感”。本文将介绍如何在 C# 项目中使用 Spire.Doc for .NET 为 Word 文档页面添加装订线。

安装 Spire.Doc for .NET

首先,您需要将 Spire.Doc for .NET 软件包中包含的 DLL 文件添加为 .NET 项目的引用。这些 DLL 文件可以通过官方提供的下载链接获取,也可以直接通过 NuGet 进行安装。

PM> Install-Package Spire.Doc

使用 C# 在 Word 文档页面顶部添加装订线

要在页面顶部启用装订线,可以将 section.PageSetup.IsTopGutter 设置为 true。默认情况下,装订线区域是空白的、不显示任何内容。本文示例还演示了如何在装订线区域中添加文本。

示例代码如下:

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Doc.Formatting;
using System.Drawing;
using System.Text;

namespace SpireDocDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建 Document 对象
            Document document = new Document();

            // 加载文档
            document.LoadFromFile("Sample1.docx");

            // 遍历文档中的所有节
            for (int i = 0; i < document.Sections.Count; i++)
            {
                // 获取当前节
                Section section = document.Sections[i];

                // 设置在页面顶部启用装订线
                section.PageSetup.IsTopGutter = true;

                // 设置装订线宽度为 100f
                section.PageSetup.Gutter = 100f;

                // 调用方法,在顶部装订线区域添加文本
                AddTopGutterText(section);
            }

            // 将修改后的文档保存为文件
            document.SaveToFile("Add Gutter Line at the Top of the Page.docx", FileFormat.Docx2016);

            // 释放文档资源
            document.Dispose();
        }

        // 在顶部装订线区域添加文本的方法
        static void AddTopGutterText(Section section)
        {
            // 获取当前节的页眉
            HeaderFooter header = section.HeadersFooters.Header;

            // 设置文本框宽度为页面宽度
            float width = section.PageSetup.PageSize.Width;

            // 设置文本框高度为 40
            float height = 40;

            // 在页眉中添加一个文本框
            TextBox textBox = header.AddParagraph().AppendTextBox(width, height);

            // 设置文本框无边框
            textBox.Format.NoLine = true;

            // 设置文本框的垂直起始位置为上边距区域
            textBox.VerticalOrigin = VerticalOrigin.TopMarginArea;

            // 设置文本框的垂直位置
            textBox.VerticalPosition = 140;

            // 设置文本框的水平对齐方式为左对齐
            textBox.HorizontalAlignment = ShapeHorizontalAlignment.Left;

            // 设置文本框的水平起始位置为左边距区域
            textBox.HorizontalOrigin = HorizontalOrigin.LeftMarginArea;

            // 设置文本锚点为底部
            textBox.Format.TextAnchor = ShapeVerticalAlignment.Bottom;

            // 设置文字环绕方式为“浮于文字上方”
            textBox.Format.TextWrappingStyle = TextWrappingStyle.InFrontOfText;

            // 设置文字环绕类型为两侧
            textBox.Format.TextWrappingType = TextWrappingType.Both;

            // 创建段落对象
            Paragraph paragraph = new Paragraph(section.Document);

            // 设置段落水平居中
            paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center;

            // 创建字体对象
            Font font = new Font("Times New Roman", 8);

            // 创建绘图对象,用于测量文本宽度
            Graphics graphics = Graphics.FromImage(new Bitmap(1, 1));
            string text1 = " - ";
            SizeF size1 = graphics.MeasureString(text1, font);
            float textWidth1 = size1.Width / 96 * 72;
            int count = (int)(textBox.Width / textWidth1);

            // 构建重复的文本字符串
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 1; i < count; i++)
            {
                stringBuilder.Append(text1);
            }

            // 创建字符格式对象
            CharacterFormat characterFormat = new CharacterFormat(section.Document);
            characterFormat.FontName = font.Name;
            characterFormat.FontSize = font.Size;

            // 将文本添加到段落并应用字符格式
            TextRange textRange = paragraph.AppendText(stringBuilder.ToString());
            textRange.ApplyCharacterFormat(characterFormat);

            // 将段落添加到文本框中
            textBox.ChildObjects.Add(paragraph);
        }
    }
}

使用 C# 在 Word 文档页面左侧添加装订线

要在页面左侧设置装订线,需要将 Section.PageSetup.IsTopGutter 属性设置为 false,以确保装订线显示在页面左侧。

示例代码如下:

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Doc.Formatting;
using System.Drawing;
using System.Text;

namespace SpireDocDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建 Document 对象
            Document document = new Document();

            // 加载文档
            document.LoadFromFile("Sample1.docx");

            // 遍历文档中的所有节
            for (int i = 0; i < document.Sections.Count; i++)
            {
                // 获取当前节
                Section section = document.Sections[i];

                // 设置不在页面顶部添加装订线(装订线将显示在页面左侧)
                section.PageSetup.IsTopGutter = false;

                // 设置装订线宽度为 100f
                section.PageSetup.Gutter = 100f;

                // 调用方法,在左侧装订线区域添加文本
                AddLeftGutterText(section);
            }

            // 将修改后的文档保存为文件
            document.SaveToFile("Add Gutter Line on the Left Side of the Page.docx", FileFormat.Docx2016);

            // 释放文档资源
            document.Dispose();
        }

        // 在左侧装订线区域添加文本的方法
        static void AddLeftGutterText(Section section)
        {
            // 获取当前节的页眉
            HeaderFooter header = section.HeadersFooters.Header;

            // 设置文本框宽度为 40
            float width = 40;

            // 获取页面高度
            float height = section.PageSetup.PageSize.Height;

            // 在页眉中添加一个文本框
            TextBox textBox = header.AddParagraph().AppendTextBox(width, height);

            // 设置文本框无边框
            textBox.Format.NoLine = true;

            // 设置文本框内文字方向为从右到左
            textBox.Format.LayoutFlowAlt = TextDirection.RightToLeft;

            // 设置文本框的水平起始位置
            textBox.HorizontalOrigin = HorizontalOrigin.LeftMarginArea;

            // 设置文本框的水平位置
            textBox.HorizontalPosition = 140;

            // 设置文本框垂直对齐方式为顶部对齐
            textBox.VerticalAlignment = ShapeVerticalAlignment.Top;

            // 设置文本框的垂直起始位置为上边距区域
            textBox.VerticalOrigin = VerticalOrigin.TopMarginArea;

            // 设置文本锚点为顶部
            textBox.Format.TextAnchor = ShapeVerticalAlignment.Top;

            // 设置文字环绕方式为“浮于文字上方”
            textBox.Format.TextWrappingStyle = TextWrappingStyle.InFrontOfText;

            // 设置文字环绕类型为两侧
            textBox.Format.TextWrappingType = TextWrappingType.Both;

            // 创建段落对象
            Paragraph paragraph = new Paragraph(section.Document);

            // 设置段落水平居中
            paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center;

            // 创建字体对象
            Font font = new Font("Times New Roman", 8);

            // 创建绘图对象,用于测量文本尺寸
            Graphics graphics = Graphics.FromImage(new Bitmap(1, 1));
            string text1 = " - ";

            // 测量文本大小
            SizeF size1 = graphics.MeasureString(text1, font);
            float textWidth1 = size1.Width / 96 * 72;

            int count = (int)(textBox.Height / textWidth1);
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 1; i < count; i++)
            {
                stringBuilder.Append(text1);
            }

            // 创建字符格式对象
            CharacterFormat characterFormat = new CharacterFormat(section.Document);
            characterFormat.FontName = font.Name;
            characterFormat.FontSize = font.Size;

            // 将文本添加到段落并应用字符格式
            TextRange textRange = paragraph.AppendText(stringBuilder.ToString());
            textRange.ApplyCharacterFormat(characterFormat);

            // 将段落添加到文本框中
            textBox.ChildObjects.Add(paragraph);
        }
    }
}

到此这篇关于C#代码实现在Word文档页面中添加装订线的文章就介绍到这了,更多相关C# Word添加装订线内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#实现获得某个枚举的所有名称

    C#实现获得某个枚举的所有名称

    这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下
    2025-01-01
  • C#的锯齿数组以及C++实现代码

    C#的锯齿数组以及C++实现代码

    锯齿数组首先是二维数组,第一维的维数是确定的。之所以在C#中能够出现灵活的锯齿数组,是因为,C#的数组是引用类型(本质上存放的是指针)。根据这个引用类型(指针)的概念,C++中用指针数组同样可以实现
    2013-09-09
  • 详解Unity 实现语音识别功能

    详解Unity 实现语音识别功能

    语言识别功能已经在我们身边普遍流行起来,在unity开发中语音识别也非常火热,今天就介绍下Unity自带的语音识别功能的实现,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • c# winform读取xml文件创建菜单的代码

    c# winform读取xml文件创建菜单的代码

    动态创建菜单使得程序灵活性大大增加,本文根据读取xml文件中的配置菜单项来动态创建菜单,代码如下
    2013-09-09
  • C# Mutex实现线程与进程同步的技术指南

    C# Mutex实现线程与进程同步的技术指南

    在多线程或多进程程序中,如果多个线程/程序同时访问同一资源,很容易导致数据冲突或程序异常,为了解决这种问题,C# 提供了强大的同步原语Mutex,下面我们就来看看它的具体使用吧
    2025-11-11
  • 新手必看Unity2019 2020保姆级安装教程

    新手必看Unity2019 2020保姆级安装教程

    这篇文章主要介绍了Unity2019 2020安装教程,本文分步骤通过图文并茂的形式给大家介绍Unity2019 2020安装方法,需要的朋友可以参考下
    2021-05-05
  • C#实现高性能异步文件下载器详解

    C#实现高性能异步文件下载器详解

    异步文件下载器用处很大,当我们需要实现大文件下载,多任务并行下载等都可以用的上,下面小编就来和大家聊聊如何使用C#实现高性能异步文件下载器吧
    2025-03-03
  • c#给图片添加文字的代码小结

    c#给图片添加文字的代码小结

    c#编程中,我们需要为图片添加文字水印,那么就可以参考下面的几个代码
    2012-11-11
  • C#常用的字符串扩展方法汇总

    C#常用的字符串扩展方法汇总

    这篇文章主要介绍了C#常用的字符串扩展方法汇总,包括了常见的字符串操作与数据类型转换等,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • C#使用MVC框架创建WebApi服务接口的流程步骤

    C#使用MVC框架创建WebApi服务接口的流程步骤

    WebAPI是一种基于HTTP协议的网络应用程序接口,它使用JSON或XML格式来传输数据,本文通过图文和代码示例给大家介绍了C#使用MVC框架创建WebApi服务接口的流程步骤,需要的朋友可以参考下
    2025-01-01

最新评论