C# web项目利用docx文档作为模板~为打印专做的解决方案

简介: 还是那句话:十年河东,十年河西,莫欺少年穷。目前,web端打印技术有很多,有收费的专业web打印控件,大家可以参考我的上一篇博客。当然,很多公司不愿意出钱,那么今天咱们就探讨下怎么做免费的打印。web端JS技术很强大,JS也提供了简单的打印方法,大家可参考JQprint()方法,这个方法网上有很多说明,在我的上一篇博客中也有提到,可以简单实现打印功能,大家可自行查询资料,在此不作说明。

还是那句话:十年河东,十年河西,莫欺少年穷。

目前,web端打印技术有很多,有收费的专业web打印控件,大家可以参考我的上一篇博客。当然,很多公司不愿意出钱,那么今天咱们就探讨下怎么做免费的打印。

web端JS技术很强大,JS也提供了简单的打印方法,大家可参考JQprint()方法,这个方法网上有很多说明,在我的上一篇博客中也有提到,可以简单实现打印功能,大家可自行查询资料,在此不作说明。

现在咱们进入主题。

本篇旨在讲解用C#代码实现打印的方法及思路。

先说下思路:

项目模块各功能要求打印的内容是各不相同的,有打印列表的,有打印图表的,有打印文字的,例如:打印三七班所有学生信息,这个属于列表。打印某个学生的体检单,这个属于表格和文字结合的。打印近五年毕业生的就业率,也就是柱状图/饼状图/线性图等,这个属于图表打印!

那么,不管是打印列表还是打印图表,亦或是其他复杂表格,我们在Docx文档中都是可以设计出来的,例如下图学生信息列表:

这种Docx文档,我们在此称为:模板

下面,将我制作的整个模板贴出来,如下:

OK,现在有了模板,我们下一步工作的内容是如何填充模板,并保存为新的Docx文档。例如:把模板中UserName替换为:XX班。把maomi替换为:三七班的班花的照片。把空着的表格填充XX班学生的信息。

如何填充模板呢?填充完以后,如何保存为新的Docx文档呢?这些都是代码可以实现的,现在咱们先避开代码部分,继续讲解思路。

有了填充后的docx文件,用户下载后,就可以实现打印了,但是docx文件不是只读的,为了防止用户故意篡改docx文档,我们有必要将docx文档转化为PDF文件或者swf文件(所谓:swf文件是Flash文件)。

将填充后的docx文档转化为PDF或者Flash文件后,我们的工作也就做完了!用户也就可以打印相应的文件了。

现在先演示下我的项目:

属于横向打印:如下:

以上便是整个操作过程,项目运行后,会在浏览器端展示PDF文件,然后,鼠标右击,打开打印页面!

至于项目代码,由于太多,不在博客园上传,下载地址:http://download.csdn.net/detail/wolongbb/9820491

@陈卧龙的博客

相关文章
|
5月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
301 19
|
5月前
|
运维 监控 安全
EventLog Analyzer:高效的Web服务器日志监控与审计解决方案
ManageEngine EventLog Analyzer是一款企业级Web服务器日志监控与审计工具,支持Apache、IIS、Nginx等主流服务器,实现日志集中管理、实时威胁检测、合规报表生成及可视化分析,助力企业应对安全攻击与合规挑战,提升运维效率。
327 0
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
880 3
|
9月前
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
718 11
|
10月前
|
人工智能 搜索推荐 IDE
突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案
本文介绍了Web Unlocker API、Web-Scraper和SERP API三大工具,助力解决AI训练与微调数据集获取难题。Web Unlocker API通过智能代理和CAPTCHA绕过技术,高效解锁高防护网站数据;Web-Scraper支持动态内容加载,精准抓取复杂网页信息;SERP API专注搜索引擎结果页数据抓取,适用于SEO分析与市场研究。这些工具大幅降低数据获取成本,提供合规保障,特别适合中小企业使用。粉丝专属体验入口提供2刀额度,助您轻松上手!
530 2
|
C# 开发工具 C++
code runner 运行C#项目
本文介绍了如何修改Code Runner设置使 Visual Studio Code (VS Code) 能直接运行完整的 C# 项目。传统方式依赖 cscript 工具,仅支持 .csx 文件,功能受限且已停止维护。新配置使用 `dotnet run` 命令,结合一系列炫酷的cmd指令,将指令定位到具体的csproj文件上进行运行。
809 38
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
842 7
|
开发框架 数据可视化 .NET
.NET 中管理 Web API 文档的两种方式
.NET 中管理 Web API 文档的两种方式
266 14
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
406 3
|
XML C# 开发工具
C# 删除Word文档中的段落
【11月更文挑战第3天】本文介绍了两种方法来操作 Word 文档:一是使用 `Microsoft.Office.Interop.Word` 库,适用于 Windows 环境下操作 Word 文档,需引用相应库并在代码中引入命名空间;二是使用 Open XML SDK,适用于处理 .docx 格式的文档,通过引用 `DocumentFormat.OpenXml` 库实现。文中提供了示例代码,展示了如何打开、删除段落并保存文档。
335 5