C#中輕松實(shí)現(xiàn)Word文檔打印的示例詳解
痛點(diǎn)直擊:C#開發(fā)者使用原生API打印Word文檔時(shí),常因樣式丟失、分頁錯(cuò)亂及打印機(jī)配置復(fù)雜而被迫加班調(diào)試。
為什么選擇Spire.Doc?
- 跨平臺(tái)支持:兼容Windows/Linux,告別Interop的COM依賴
- 樣式零損失:精確還原表格、水印、頁眉頁腳等復(fù)雜元素
- API極簡(jiǎn)設(shè)計(jì):三行代碼完成從加載到打印的完整流程
版本要求:Spire.Doc for .NET 10.8.9+(需.NET 5.0或.NET Core 3.1+運(yùn)行時(shí))
章節(jié)一:環(huán)境配置與文檔加載
1.1 NuGet安裝
Install-Package Spire.Doc
注意:社區(qū)版免費(fèi)但有頁數(shù)限制,商用需授權(quán)
1.2 文檔加載方式對(duì)比
| 方法簽名 | 適用場(chǎng)景 |
| LoadFile(string fileName) | 本地文件路徑 |
| LoadFile(Stream stream) | 內(nèi)存流/網(wǎng)絡(luò)流 |
using Spire.Doc;
using System.IO;
// 方式1:加載本地文件
Document doc = new Document();
doc.LoadFile(@"D:\Contracts\report.docx");
// 方式2:從內(nèi)存流加載
byte[] fileBytes = File.ReadAllBytes("template.doc");
using (MemoryStream ms = new MemoryStream(fileBytes))
{
doc.LoadFile(ms);
}章節(jié)二:核心打印配置演示
2.1 PrinterSettings關(guān)鍵參數(shù)
PrinterSettings settings = doc.PrintDocument.PrinterSettings;
// 基礎(chǔ)配置
settings.PrinterName = "HP LaserJet P2055dn"; // 指定打印機(jī)
settings.Copies = 2; // 打印份數(shù)
settings.Duplex = Duplex.Vertical; // 雙面打印
// 紙張尺寸控制
settings.DefaultPageSettings.PaperSize =
new PaperSize("A4", 827, 1169); // 單位:1/100英寸2.2 分頁邏輯控制
通過PrintPageEventArgs自定義分頁策略:
doc.PrintDocument.PrintPage += (sender, e) =>
{
if (e.PageSettings.PrintRange == PrintRange.SomePages)
{
// 動(dòng)態(tài)調(diào)整頁邊距示例
e.PageSettings.Margins.Left = 50;
}
e.HasMorePages = false; // 終止分頁
};2.3 頁面縮放語法對(duì)比表
| 功能 | Spire.Doc | Interop |
| 縮放至A4 | doc.PrintSettings.ScaleToPercent = 100 | pageSetup.Zoom = 100 |
| 適合頁面 | doc.PrintSettings.FitToPage = true | pageSetup.FitToPagesWide = 1 |
章節(jié)三:高級(jí)打印技巧
3.1 異常處理(高頻故障)
| 現(xiàn)象 | 原因 | 解決方案 |
| 拒絕訪問 | 權(quán)限不足 | 以管理員身份運(yùn)行程序 |
| 打印機(jī)不可用 | 設(shè)備離線/未共享 | 捕獲InvalidPrinterException |
| OutOfMemoryException | 大文件處理失敗 | 分頁加載+釋放非托管資源 |
3.2 批量打印隊(duì)列
List<string> files = Directory.GetFiles("待打印").ToList();
foreach (var file in files)
{
using Document doc = new Document();
doc.LoadFile(file);
doc.PrintDocument.PrinterSettings = GetSharedSettings();
doc.Print(); // 自動(dòng)釋放資源
}3.3 性能優(yōu)化三要素
1. 禁用預(yù)覽:doc.PrintSettings.PrintNoPages = true
2. 高速模式:設(shè)置打印質(zhì)量為Draft
3. 資源回收:及時(shí)Dispose文檔對(duì)象
總結(jié)與資源
五個(gè)關(guān)鍵參數(shù)
- PrinterSettings.Copies
- PageSettings.PaperSize
- PrintSettings.Duplex
- PrintSettings.ScaleToPercent
- PrintDocument.DefaultPageSettings
到此這篇關(guān)于C#中輕松實(shí)現(xiàn)Word文檔打印的示例詳解的文章就介紹到這了,更多相關(guān)C#打印Word內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于C#調(diào)用C++dll傳指針釋放內(nèi)存問題
這篇文章主要介紹了關(guān)于C#調(diào)用C++dll傳指針釋放內(nèi)存問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
C# 調(diào)用 JavaWebservice服務(wù)遇到的問題匯總
本文給大家分享的是個(gè)人在使用C#調(diào)用 JavaWebservice服務(wù)遇到的幾個(gè)問題的解決方法的匯總,給有類似需求的小伙伴們參考下吧。2016-01-01
C#仿QQ實(shí)現(xiàn)簡(jiǎn)單的截圖功能
這篇文章主要為大家詳細(xì)介紹了如何利用C#語言模擬QQ實(shí)現(xiàn)屏幕選擇區(qū)域截圖功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-08-08
unity 如何使用LineRenderer 動(dòng)態(tài)劃線
這篇文章主要介紹了unity 使用LineRenderer 動(dòng)態(tài)劃線的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04
C#多態(tài)的三種實(shí)現(xiàn)方式(小結(jié))
這篇文章主要介紹了C#多態(tài)的三種實(shí)現(xiàn)方式(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
C#如何實(shí)現(xiàn)子進(jìn)程跟隨主進(jìn)程關(guān)閉
多進(jìn)程開發(fā)經(jīng)常會(huì)遇到主進(jìn)程關(guān)閉,子進(jìn)程需要跟隨主進(jìn)程一同關(guān)閉,比如調(diào)ffmpeg命令行實(shí)現(xiàn)的錄屏程序等,下面我們就來看看C#是如何實(shí)現(xiàn)子進(jìn)程跟隨主進(jìn)程關(guān)閉的吧2024-04-04
C#利用StreamReader和StreamWriter類處理文本的字符編碼使用示例
.NET Framework 中,StreamReader 和 StreamWriter 類提供了一些方法來處理字符編碼,這篇文章主要介紹了C#利用StreamReader和StreamWriter類處理文本的字符編碼使用示例,需要的朋友可以參考下2024-06-06

