当前位置: 首页 > news >正文

C# 打印Word文档 – 4种打印方法

Word文档是日常办公和学习中不可或缺的一部分。比如在商务往来中,经常需要打印 Word 文档用于撰写和传递正式的商务信函、合作协议、项目提案等。打印出来的文档便于双方签字盖章,具有法律效力和正式性。本文将提供以下4种通过C# 打印Word文档的方法,以适应不同的场景需求。

目录

C# 通过物理打印机打印Word文档

C# 静默打印 Word 文档

C# 通过虚拟打印机将 Word 转为 PDF

C# 在一张纸上打印多个页面


免费 .NET Word库 - Free Spire.Doc for .NET。要实现通过C#打印Word文档,我们需要安装该免费库(有页数限制)。可以直接在Visual Studio中通过NuGet搜索 “FreeSpire.Doc”,然后点击 “安装” 将其引用到程序中。或者通过该链接下载产品包,解压后再手动将dll文件添加引用至程序。

Downloads - Free Spire.XLSDownload free .NET/Wpf Excel library to read, create, manipulate, convert & print Microsoft Excel documents.https://www.e-iceblue.com/Download/download-excel-for-net-free.html

C# 通过物理打印机打印Word文档

通过免费.NET库提供的 PrintDocument 类,我们可以在指定的打印机上打印 Word 文档,还可以指定设置打印选项,如要打印的页面范围、份数、和纸张大小等。

C# 代码:

using Spire.Doc;
using System.Drawing.Printing;

namespace PrintWordDocument
{
    class Program
    {
        static void Main(string[] args)
        {
            // 加载Word文档
            Document doc = new Document();
            doc.LoadFromFile("示例.docx");

            // 获取 PrintDocument 对象
            PrintDocument printDoc = doc.PrintDocument;

            // 指定打印机名称
            printDoc.PrinterSettings.PrinterName = "打印机名";

            // 指定要打印的页面范围
            printDoc.PrinterSettings.FromPage = 1;
            printDoc.PrinterSettings.ToPage = 10;

            // 设置打印份数
            printDoc.PrinterSettings.Copies = 1;

            // 指定纸张大小
            printDoc.DefaultPageSettings.PaperSize = new PaperSize("custom", 500, 800);

            // 打印文档
            printDoc.Print();
        }
    }
}

C# 静默打印 Word 文档

静默打印是指在打印过程中不弹出打印对话框,直接通过程序或系统设置自动完成打印操作。使用Free Spire.Doc,我们可以将 PrintController 属性设置为 StandardPrintController,用于隐藏打印进程,从而实现静默打印。

C# 代码:

using Spire.Doc;
using System.Drawing.Printing;

namespace SilentlyPrintWord
{
    class Program
    {
        static void Main(string[] args)
        {
            // 加载Word文档
            Document doc = new Document();
            doc.LoadFromFile("示例.docx");

            // 获取 PrintDocument 对象
            PrintDocument printDoc = doc.PrintDocument;

            // 指定打印机名称
            printDoc.PrinterSettings.PrinterName = "打印机名";

            // 将PrintController属性设置为StandardPrintController,用于隐藏打印进程
            printDoc.PrintController = new StandardPrintController();

            // 打印文档
            printDoc.Print();
        }
    }
}

注意:静默打印时无法实时确认打印效果和参数设置,如果打印机出现故障或打印参数设置错误,可能会导致打印失败或结果不符合预期。所以在正式使用静默打印前,建议先进行测试,确保打印设置和打印机状态正常。

C# 通过虚拟打印机将 Word 转为 PDF

虚拟打印机是一种软件,能模拟实现打印机的功能,但并不涉及实际的纸张和墨水消耗,而是将电子文档转换为特定格式的电子文件保存在电脑上。除了物理打印机外,Free Spire.Doc也支持使用虚拟打印机。

C# 代码:

using Spire.Doc;
using System.Drawing.Printing;

namespace PrintWordToPdf
{
    class Program
    {
        static void Main(string[] args)
        {
            // 加载Word文档
            Document doc = new Document();
            doc.LoadFromFile("示例.docx");

            // 获取 PrintDocument 对象
            PrintDocument printDoc = doc.PrintDocument;

            // 打印输出到文件
            printDoc.PrinterSettings.PrintToFile = true;

            // 指定虚拟打印机名称
            printDoc.PrinterSettings.PrinterName = "Microsoft Print to PDF";

            // 指定输出文件路径和名称
            printDoc.PrinterSettings.PrintFileName = @"C:\Users\Administrator\Desktop\ToPDF.pdf";

            // 打印文档
            printDoc.Print();
        }
    }
}

C# 在一张纸上打印多个页面

将多个相关的 Word 文档页面打印在一张纸上,以便于对比查看和整理资料,提高工作效率,减少纸张浪费。通过使用 PrintMultipageToOneSheet() 方法可以实现该操作。

C# 代码:

using Spire.Doc;
using Spire.Doc.Printing;
using System.Drawing.Printing;

namespace PrintMultiplePagesOnOneSheet
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 加载Word文档
            Document doc = new Document();
            doc.LoadFromFile("示例.docx");

            // 获取 PrintDocument 对象
            PrintDocument printDoc = doc.PrintDocument;

            // 启用单面打印
            printDoc.PrinterSettings.Duplex = Duplex.Simplex;

            // 将指定的页数打印到一页上
            doc.PrintMultipageToOneSheet(PagesPreSheet.TwoPages, false);
        }
    }
}

相关文章:

  • 知识管理接入DeepSeek大模型,能够带来什么新体验?
  • 人工智能的无声基石:被低估的数据革命
  • ubuntu 安全策略(等保)
  • 最新Java面试题,常见面试题及答案汇总
  • 蓝桥杯 Java B 组之记忆化搜索(滑雪问题、斐波那契数列)
  • 深入xtquant:掌握实时行情订阅的艺术
  • 1.部署zookeeper集群:2181
  • vue自定义指令千分位
  • ssh工具
  • ROS的action通信——实现阶乘运算(一)
  • 数据安全_笔记系列05:数据合规与隐私保护(GDPR、CCPA、中国《数据安全法》)深度解析
  • vite react 项目打包报错处理
  • 矩阵碰一碰发视频的后端源码技术,支持OEM
  • 使用 Containerd 通过 HTTP 协议拉取 Harbor 私有镜像仓库的镜像
  • 使用内置命令查看笔记本电池健康状态
  • Uppy - 免费开源、功能强大的新一代 web 文件上传组件,支持集成到 Vue 项目
  • Modelfile配置说明
  • AI绘画软件Stable Diffusion详解教程(2):Windows系统本地化部署操作方法(专业版)
  • ui设计公司兰亭妙微分享:科研单位UI界面设计
  • c#笔记-基础知识
  • 人民日报:从“轻微免罚”看涉企执法方式转变
  • 重庆发布经济犯罪案件接报警电子地图,企业可查询导航属地经侦服务点
  • 牛市早报|中方调整对美加征关税措施,五部门约谈外卖平台企业
  • 优化营商环境,服务上海“五个中心”建设,北外滩有何举措?
  • 美股全线收涨:道指涨逾千点,纳斯达克中国金龙指数涨5.4%
  • “降息潮”延续,多家民营银行下调存款利率