Полное практическое руководство по печати документов Word с помощью C#
В разработке проектов на .NET печать документов Word является часто востребованной функцией в офисных системах, системах автоматизации документооборота и системах управления документами. Родной фреймворк .NET не предоставляет зрелого решения для печати Word, а традиционный способ вызова COM-компонентов страдает от проблем с совместимостью, сложности развертывания и подверженности ошибкам.
Free Spire.Doc for .NET — это профессиональный компонент для работы с документами Word в .NET, который позволяет быстро загружать, редактировать, печатать и конвертировать форматы документов Word без необходимости использования Microsoft Office. В этой статье подробно рассматривается, как использовать C# в сочетании с Spire.Doc для реализации полного набора практических функций, включая базовую печать документов Word, печать с пользовательскими параметрами и бесшумную фоновую печать без всплывающих окон.
1. Подготовка среды разработки
1.1 Зависимости среды
Инструмент разработки: Visual Studio 2019/2022
Платформа выполнения: .NET Framework / .NET Core / .NET 5+ (полная совместимость со всеми версиями)
Основной компонент: Free Spire.Doc for .NET
1.2 Установка компонента
Рекомендуется быстрая установка компонента через менеджер пакетов NuGet. Доступны два способа установки на выбор:
Способ 1: Визуальная установка через NuGet
В Visual Studio щелкните правой кнопкой мыши по проекту → Управление пакетами NuGet → выполните поиск Spire.Doc → нажмите «Установить».
Способ 2: Установка через командную строку NuGet
Откройте консоль диспетчера пакетов и выполните следующую команду:
Install-Package FreeSpire.Doc
2. Базовая функциональность: Быстрая реализация печати документа Word по умолчанию
Функция базовой печати позволяет напрямую загрузить локальный документ Word и отправить его на печать на системный принтер по умолчанию без сложной настройки, что подходит для простых сценариев печати документов. Полный рабочий код:
using Spire.Doc;
using System.Drawing.Printing;
namespace PrintWordDocument
{
internal class Program
{
static void Main(string[] args)
{
// 1. Инициализация объекта документа Word
Document doc = new Document();
// 2. Загрузка локального документа Word (поддерживаются форматы docx/doc)
doc.LoadFromFile("Input.docx");
// 3. Получение основного объекта печати документа
PrintDocument printDoc = doc.PrintDocument;
// 4. Вызов системного принтера по умолчанию для выполнения печати
printDoc.Print();
}
}
}
Разбор кода
Класс Document : Основной класс документа в Spire.Doc, используемый для загрузки, анализа и управления документами Word;
Метод LoadFromFile : Читает файл Word по указанному локальному пути, поддерживает абсолютные и относительные пути;
Свойство PrintDocument : Инкапсулирует основной экземпляр печати документа, взаимодействует со службой печати системы;
Метод Print : Выполняет команду печати, по умолчанию использует системный принтер по умолчанию и стандартные параметры печати.
3. Расширенная функциональность: Пользовательские параметры печати Word
В реальных проектах параметры печати по умолчанию не могут удовлетворить разнообразные потребности. Spire.Doc поддерживает детальную настройку правил печати через класс PrinterSettings , включая указание принтера, диапазона страниц, количества копий, двусторонней печати, пользовательского размера бумаги, печати в PDF и других функций.
Сначала получите экземпляр настроек печати с помощью следующего кода, все последующие пользовательские настройки будут реализованы на основе этого объекта:
PrinterSettings settings = printDoc.PrinterSettings;
3.1 Указание принтера для печати
В среде с несколькими принтерами можно вручную указать имя целевого принтера для точного сопоставления с печатающим устройством, избегая проблем с неправильным выбором принтера по умолчанию.
// Введите полное имя установленного в системе принтера
settings.PrinterName = "Your Printer Name";
3.2 Указание диапазона страниц для печати
Для длинных документов можно настроить начальную и конечную страницы печати, выводя только указанный диапазон страниц для экономии ресурсов.
// Печать страниц с 1 по 5
settings.FromPage = 1;
settings.ToPage = 5;
3.3 Установка количества копий
Поддерживается настройка количества копий документа для печати без повторного вызова метода печати, принтер автоматически выводит указанное количество экземпляров.
// Установка печати 2 копий документа
settings.Copies = 2;
3.4 Включение двусторонней печати
Сначала проверьте, поддерживает ли принтер функцию двусторонней печати, для обеспечения совместимости с аппаратным обеспечением и избежания ошибок из-за недопустимых настроек.
// Проверка поддержки двусторонней печати принтером; при поддержке включается режим двусторонней печати по умолчанию
if (settings.CanDuplex)
{
settings.Duplex = Duplex.Default;
}
3.5 Пользовательский размер бумаги для печати
Адаптация к специальным сценариям печати: можно задать нестандартные размеры бумаги по ширине и высоте для удовлетворения потребностей печати квитанций и документов с особым макетом.
// Пользовательский размер бумаги: имя "custom", ширина 800, высота 500
settings.DefaultPageSettings.PaperSize = new PaperSize("custom", 800, 500);
3.6 Печать документа Word в PDF (виртуальная печать)
Используя встроенный виртуальный принтер «Microsoft Print to PDF», можно реализовать функцию конвертации Word в PDF без дополнительных компонентов, одним нажатием экспортировать PDF-файл.
// Включение режима печати в файл
settings.PrintToFile = true;
// Указание виртуального принтера PDF
settings.PrinterName = "Microsoft Print to PDF";
// Установка пути сохранения экспортируемого PDF
settings.PrintFileName = @"C:\Output.pdf";
4. Расширенная функциональность: Бесшумная печать без всплывающих окон
В автоматизированных фоновых службах и пакетных программах печати требуется реализовать бесшумную печать без взаимодействия и всплывающих окон . С помощью StandardPrintController можно отключить системный диалог печати и выполнять фоновую печать без какого-либо вмешательства пользователя.
Полный код для бесшумной печати:
using Spire.Doc;
using System.Drawing.Printing;
namespace SilentlyPrintWord
{
class Program
{
static void Main(string[] args)
{
// Инициализация и загрузка документа Word
Document doc = new Document();
doc.LoadFromFile("Input.docx");
// Получение объекта печати
PrintDocument printDoc = doc.PrintDocument;
// Отключение всплывающих окон печати, включение режима бесшумной печати
printDoc.PrintController = new StandardPrintController();
// Выполнение фоновой бесшумной печати
printDoc.Print();
}
}
}
Основной принцип
Режим печати по умолчанию вызывает системное диалоговое окно настроек печати, в то время как StandardPrintController является стандартным контроллером печати, который подавляет все интерактивные окна и напрямую вызывает службу печати для выполнения операции. Это идеально подходит для автоматизированной пакетной печати и фоновой печати по расписанию.
5. Часто задаваемые вопросы и важные замечания
Проблемы с путями : При загрузке документа рекомендуется использовать абсолютные пути, чтобы избежать исключений «файл не найден» из-за относительных путей;
Имя принтера : При указании пользовательского принтера имя должно полностью совпадать с именем в списке системных принтеров, включая пробелы и символы;
Совместимость с оборудованием : Двусторонняя печать и нестандартные размеры бумаги требуют поддержки со стороны аппаратного принтера; рекомендуется заранее проверять совместимость оборудования;
Проблемы с разрешениями : Для работы программы требуются разрешения на использование службы печати; при развертывании на сервере необходимо убедиться, что служба печати системы работает корректно.
6. Заключение
В этой статье на основе компонента Free Spire.Doc for .NET представлено полное решение для печати документов Word в среде C#, охватывающее четыре ключевых сценария: базовая печать по умолчанию, детальная настройка параметров печати, фоновая бесшумная печать и виртуальная печать Word в PDF .
Это решение не требует зависимости от среды Office, обладает высокой совместимостью, лаконичным кодом и гибкой настройкой, и может быть непосредственно адаптировано для различных бизнес-сценариев .NET, таких как настольные приложения, фоновые службы и веб-проекты, что позволяет полностью решить проблемы совместимости и удобства использования традиционной печати Word.























