10人参与 • 2025-10-22 • Asp.net
痛点直击:c#开发者使用原生api打印word文档时,常因样式丢失、分页错乱及打印机配置复杂而被迫加班调试。
为什么选择spire.doc?
版本要求:spire.doc for .net 10.8.9+(需.net 5.0或.net core 3.1+运行时)
install-package spire.doc
注意:社区版免费但有页数限制,商用需授权
| 方法签名 | 适用场景 |
| loadfile(string filename) | 本地文件路径 |
| loadfile(stream stream) | 内存流/网络流 |
using spire.doc;
using system.io;
// 方式1:加载本地文件
document doc = new document();
doc.loadfile(@"d:\contracts\report.docx");
// 方式2:从内存流加载
byte[] filebytes = file.readallbytes("template.doc");
using (memorystream ms = new memorystream(filebytes))
{
doc.loadfile(ms);
}printersettings settings = doc.printdocument.printersettings;
// 基础配置
settings.printername = "hp laserjet p2055dn"; // 指定打印机
settings.copies = 2; // 打印份数
settings.duplex = duplex.vertical; // 双面打印
// 纸张尺寸控制
settings.defaultpagesettings.papersize =
new papersize("a4", 827, 1169); // 单位:1/100英寸通过printpageeventargs自定义分页策略:
doc.printdocument.printpage += (sender, e) =>
{
if (e.pagesettings.printrange == printrange.somepages)
{
// 动态调整页边距示例
e.pagesettings.margins.left = 50;
}
e.hasmorepages = false; // 终止分页
};| 功能 | spire.doc | interop |
| 缩放至a4 | doc.printsettings.scaletopercent = 100 | pagesetup.zoom = 100 |
| 适合页面 | doc.printsettings.fittopage = true | pagesetup.fittopageswide = 1 |
| 现象 | 原因 | 解决方案 |
| 拒绝访问 | 权限不足 | 以管理员身份运行程序 |
| 打印机不可用 | 设备离线/未共享 | 捕获invalidprinterexception |
| outofmemoryexception | 大文件处理失败 | 分页加载+释放非托管资源 |
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(); // 自动释放资源
}1. 禁用预览:doc.printsettings.printnopages = true
2. 高速模式:设置打印质量为draft
3. 资源回收:及时dispose文档对象
五个关键参数
到此这篇关于c#中轻松实现word文档打印的示例详解的文章就介绍到这了,更多相关c#打印word内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论