Text Control 控件教程:在 .NET 中打印 MS Word DOCX 文档

虽然有用于创建 DOCX 文件的库(例如 Open XML SDK),但打印又是另一回事。打印 DOCX 文件的唯一方法是在 Microsoft Word 中打开它并手动打印。对于需要打印大量文档的 Web 应用程序或需要自动打印文档的服务器端应用程序来说,这不是一个好的解决方案。

TX Text Control 是一款功能类似于 MS Word 的文字处理控件,包括文档创建、编辑、打印、邮件合并、格式转换、拆分合并、导入导出、批量生成等功能。广泛应用于企业文档管理,网站内容发布,电子病历中病案模板创建、病历书写、修改历史、连续打印、病案归档等功能的实现。

TX Text Control 最新下载icon-default.png?t=N7T8https://www.evget.com/vendor/118

TX Text Control 不仅提供了以编程方式创建 DOCX 文件的功能,还提供了无需使用 MS Word 或 Microsoft Office Interop 即可打印这些文件的功能。本文介绍了使用 TX Text Control 打印 DOCX 文件的不同方法:

  • 通过完全打印机访问权限直接打印
  • 创建 PDF 文件
  • 从文档页面创建 SVG 图像
  • 从文档页面创建图像
准备申请

为了本演示的目的,创建了一个.NET 8 控制台应用程序。

  1. 在 Visual Studio 中,使用 .NET 8创建一个新的控制台应用程序。

  2. 解决方案资源管理器中,选择您创建的项目,然后从项目主菜单中选择管理 NuGet 包...。

    包源下拉菜单中选择文本控制离线包。

    安装以下软件包的最新版本:

    • TX文本控制.文本控制.ASP.SDK

创建 PDF

直接打印

TX Text Control 提供了一种Print 方法,可用于将当前文档打印到默认打印机。以下代码显示如何在控制台应用程序中将文档打印到默认打印机。

using System.Drawing.Printing;

using (TXTextControl.ServerTextControl tx = new TXTextControl.ServerTextControl())
{
tx.Create();
tx.Load("test.docx", TXTextControl.StreamType.WordprocessingML);

PrintDocument printDocument = new PrintDocument();
printDocument.PrinterSettings.PrinterName = "Microsoft Print to PDF";
tx.Print(printDocument);

TX Text Control 不仅允许您加载和打印 DOCX 文件,还允许您加载和打印二进制 MS Word 格式 DOC 和 RTF 文件。

您还可以通过将打印机名称传递给 PrinterSettings对象来打印到特定打印机。在这种情况下,打印机名称是Microsoft Print to PDF,输出是 PDF 文件。

using System.Drawing.Printing;

using (TXTextControl.ServerTextControl tx = new TXTextControl.ServerTextControl())
{
tx.Create();
tx.Load("test.docx", TXTextControl.StreamType.WordprocessingML);

PrintDocument printDocument = new PrintDocument();
printDocument.PrinterSettings.PrinterName = "Microsoft Print to PDF";
printDocument.PrinterSettings.PrintToFile = true;
printDocument.PrinterSettings.PrintFileName = "test.pdf";

tx.Print(printDocument);
}
创建 PDF 文件

TX Text Control 提供了Save 方法,可用于将当前文档保存为 PDF 文件。以下代码显示如何在控制台应用程序中将文档保存为 PDF 文件。

using (TXTextControl.ServerTextControl tx = new TXTextControl.ServerTextControl())
{
tx.Create();
tx.Load("test.docx", TXTextControl.StreamType.WordprocessingML);
tx.Save("test.pdf", TXTextControl.StreamType.AdobePDF);
}

此代码使用ServerTextControl直接生成二进制 PDF 文档,无需使用打印机驱动程序。PDF 文件存储在文件系统中。Save方法可用于将文档保存为各种格式,包括 DOCX、DOC、RTF 和 PDF。

创建 SVG 图像

TX Text Control 还可用于从文档页面创建 SVG 图像。SVG 的优势在于它是所有浏览器都支持的标准,而且由于它是一种矢量图形格式,因此文本内容的质量不会受到任何损失。

Get Image方法有一个实现, 它将页面作为 SVG 格式的 Base64 编码字符串返回。

string svgSources = tx.GetPages()[1].GetImage(TXTextControl.Page.PageContent.All, 300);

第一个参数PageContent定义该方法要返回的内容。第二个参数定义嵌入位图图像的分辨率。

以下方法从文档的所有页面创建 SVG 图像并将其保存到文件系统。

public string[] CreateSVG(ServerTextControl TextControl,
bool GlyphOutlines = false,
int FromPage = 1,
int ToPage = -1)
{
// create array for SVGs
string[] svgPages = new string[(ToPage == -1 ? TextControl.Pages : ToPage)];

// set page content
TXTextControl.Page.PageContent pageContent =
GlyphOutlines ? TXTextControl.Page.PageContent.All | TXTextControl.Page.PageContent.GlyphOutlines
: TXTextControl.Page.PageContent.All;

for (int i = FromPage; i <= (ToPage == -1 ? TextControl.Pages : ToPage); i++)
{
// get SVG from page
svgPages[i - 1] = TextControl.GetPages()[i].GetImage(pageContent, 96);
}

return svgPages;
}
创建图像

TX Text Control 还可用于从文档页面创建图像(例如 JPG 或 PNG)。以下代码显示了如何在控制台应用程序中从文档页面创建图像。

using System.Collections;
using System.Drawing.Imaging;
using System.Drawing;
using TXTextControl;

using (TXTextControl.ServerTextControl tx = new TXTextControl.ServerTextControl())
{
tx.Create();
tx.Load("test.docx", TXTextControl.StreamType.WordprocessingML);

ArrayList inputImages = new ArrayList();

foreach (Page page in tx.GetPages())
{
MemoryStream image = new MemoryStream();
Bitmap mf = page.GetImage(100, TXTextControl.Page.PageContent.All);
mf.Save(image, ImageFormat.Png);
inputImages.Add(image);
}

// save images as files
int i = 0;
foreach (MemoryStream ms in inputImages)
{
FileStream file = new FileStream("image" + i.ToString() + ".png", FileMode.Create, FileAccess.Write);
ms.WriteTo(file);
file.Close();
i++;
}
}

GetImage方法有一个实现,它返回Bitmap存储在对象数组中的页面对象Bitmap。第二部分展示了如何将这些图像保存到文件系统。

结论

TX Text Control 提供了以编程方式创建 DOCX 文件的功能,以及无需使用 MS Word 或 Microsoft Office Interop 即可打印这些文件的功能。本文介绍了使用 TX Text Control 打印 DOCX 文件的各种方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/786007.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

将直流电转换为交流电:逆变器的基本原理

什么是逆变器&#xff1f; 大多数电源设计都包括一个称为整流器的部分&#xff0c;该整流器将输入的交流波转换为不稳定的直流电压。但是&#xff0c;我们不能总是依赖来自建筑物主电源的交流输入到我们的系统中。 逆变器是一种将直流电 &#xff08;DC&#xff09; 转换为交…

前端八股文 跨域

前端跨域和常见解决方案 一、什么是跨域 同源策略是一个重要的安全策略&#xff0c;它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的 资源进行交互。它能帮助阻隔恶意文档&#xff0c;减少可能被攻击的媒介。 有一点必须要注意&#xff1a;跨域并不是请求发不…

青岛外贸建站公司wordpress网站模板

电子数码wordpress网站模板 电子数码wordpress网站模板&#xff0c;做数码电子的生产厂家或外贸公司官方网站模板。 https://www.jianzhanpress.com/?p3161 金属不锈钢wordpress外贸主题 适合从事金属不锈钢生产、加式或做外贸的公司&#xff0c;简洁wordpress外贸主题模板…

【粉丝福利 | 第8期】值得收藏!推荐10个好用的数据血缘工具

⛳️ 写在前面参与规则&#xff01;&#xff01;&#xff01; ✅参与方式&#xff1a;关注博主、点赞、收藏、评论&#xff0c;任意评论&#xff08;每人最多评论三次&#xff09; ⛳️本次送书1~4本【取决于阅读量&#xff0c;阅读量越多&#xff0c;送的越多】 目前市面上绝…

微信公众平台、公众号、小程序联动

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 微信公众平台、公众号、小程序联动 如何通过unionid获取到微信公众openid如何根据code获取微信公…

阿里云登陆Centos7

用自己电脑登陆Centos7太麻烦了&#xff0c;还要自己弄个虚拟机&#xff0c;一个电脑里面既有WIN又有LINUX&#xff0c;索性直接买个阿里云服务器&#xff0c;来学习Centos7。 购买 我是新用户&#xff0c;可以试用3个月&#xff0c;先用个3个月再说哈哈哈。 一系列操作之后…

记一次 .NET某酒业业务系统 崩溃分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他的程序每次关闭时就会自动崩溃&#xff0c;一直找不到原因让我帮忙看一下怎么回事&#xff0c;这位朋友应该是第二次找我了&#xff0c;分析了下 dump 还是挺经典的&#xff0c;拿出来给大家分享一下吧。 …

如何在Vue中实现拖拽功能?

Vue.js是一款流行的JavaScript框架&#xff0c;用于构建用户界面。其中一个常见的需求是在Vue中实现拖拽功能&#xff0c;让用户可以通过拖拽元素来进行交互。今天&#xff0c;我们就来学习如何在Vue中实现这一功能。 首先&#xff0c;我们需要明白拖拽功能的基本原理&#xf…

51单片机嵌入式开发:6、 STC89C52RC 定时器0-1-2-看门狗 操作

STC89C52RC 定时器0-1-2-看门狗 操作 1 定时器介绍1.1 定时器概述1.2 课程思路 2 定时器类型2.1 定时器0、12.2 定时器22.3 看门狗定时器2.4 中断介绍 3 定时器操作3.1 定时器0操作3.2 定时器1操作3.3 定时器2操作3.4 看门狗定时器操作 4 定时器总结 1 定时器介绍 1.1 定时器概…

layui项目中的layui.define、layui.config以及layui.use的使用

第一步:创建一个layuiTest项目&#xff0c;结构如下 第二步&#xff1a;新建一个test.js,利用layui.define定义一个模块test,并向外暴露该模块&#xff0c;该模块里面有两个方法method1和method2. 第三步&#xff1a;新建一个test.html&#xff0c;在该页面引入layui.js&#x…

Loadlibrary failed with error 87:参数错误

问题描述&#xff1a; win10 系统在安装 Photoshop 2022 版后&#xff0c;点击桌面图标提示&#xff1a;Loadlibrary failed with error 87&#xff1a;参数错误&#xff0c;反复出现&#xff0c;反复确定&#xff0c;直至软件关闭。 解决方法&#xff1a; 1. 找到 C:\Window…

共筑智能未来 | 思腾合力闪耀2024世界人工智能大会(WAIC 2024)

在刚刚结束的2024世界人工智能大会暨人工智能全球治理高级别会议&#xff08;WAIC 2024&#xff09;上&#xff0c;思腾合力作为行业领先的人工智能基础架构解决方案提供商&#xff0c;凭借卓越的产品和解决方案&#xff0c;成为展会上的亮点之一。此次盛会不仅展示了全球人工智…

C++ Qt 自制开源科学计算器

C Qt 自制开源科学计算器 项目地址 软件下载地址 目录 0. 效果预览1. 数据库准备2. 按键&快捷键说明3. 颜色切换功能(初版)4. 未来开发展望5. 联系邮箱 0. 效果预览 普通计算模式效果如下&#xff1a; 科学计算模式效果如下&#xff1a; 更具体的功能演示视频见如下链接…

Java版Flink使用指南——从RabbitMQ中队列中接入消息流

大纲 创建RabbitMQ队列新建工程新增依赖编码设置数据源配置读取、处理数据完整代码 打包、上传和运行任务测试 工程代码 在《Java版Flink使用指南——安装Flink和使用IntelliJ制作任务包》一文中&#xff0c;我们完成了第一个小型Demo的编写。例子中的数据是代码预先指定的。而…

74HC165芯片验证

目录 0x01 74HC165芯片介绍0x02 编程实现 0x01 74HC165芯片介绍 74HC165的引脚定义如下&#xff0c;长这个样子 ABCDEFGH是它的八个输入引脚&#xff0c;例如你可以将它连接按键&#xff0c;让它来读取8个按键值。也可以将他级联其它的74165&#xff0c;无需增加单片机GPIO引…

Nginx+Tomcat群集

一.实验环境 二.安装多台Tomcat服务器 1.在安装Tomcat之前必须先安装JDK。 JDK的全称是Java Development Kit&#xff0c;是sun公司提供的JAVA语言的软件开发工具包&#xff0c;其中包含Java虚拟机&#xff08;JVM&#xff09;&#xff0c;编写好的Java源程序经过编译可形成Ja…

bert-base-chinese模型离线使用案例

import torch import torch.nn as nn from transformers import BertModel, BertTokenizer# 通过torch.hub(pytorch中专注于迁移学的工具)获得已经训练好的bert-base-chinese模型 # model torch.hub.load(huggingface/pytorch-transformers, model, bert-base-chinese) model…

Python 定义和调用函数

在Python编程中&#xff0c;函数是组织和重用代码的一种重要方式。函数可以提高代码的可读性和维护性&#xff0c;并且可以避免重复代码。 1. 定义函数 在Python中&#xff0c;函数使用def关键字定义。一个简单的函数定义包括函数名、参数列表和函数体。以下是一个基本的函数…

[Python爬虫] 抓取京东商品数据||京东商品API接口采集

本文结构&#xff1a; 一、引言 二、代码分享 三、问题总结 引言 这两天因为一些需求&#xff0c;研究了一下如何爬取京东商品数据。最开始还是常规地使用selenium库进行商品页的商品抓取&#xff0c;后来因为想要获取优惠信息&#xff0c;只能进入到商品详情页进行抓取&#x…

苏东坡传-读书笔记十一

苏东坡对写作与风格所表示的意见最为清楚。他说做文章“大略如行云流水&#xff0c;初无定质&#xff0c;但常行于所当行&#xff0c;常止于所不可不止。文理自然&#xff0c;姿态横生。孔子曰&#xff1a;‘言之不文&#xff0c;行而不远。’又曰&#xff1a;‘辞达而已矣。’…