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

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

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

TX Text Control 最新下载https://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
直接打印

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 文件的各种方法。

相关推荐
泛凡(Linyongui)10 小时前
基于 CW32L010 的智能厨卫调温旋钮方案--低成本 EC21 编码旋钮全解析
单片机·嵌入式硬件·c#
暴走约伯12 小时前
【VFX工具链源码拆解 02】告别机械劳动(上):一键统改百个子粒子颜色与批量重命名
3d·unity·c#·材质
信息安全失业大专人员13 小时前
每日了解一个智能体-WorkBuddy
开发语言·ai·c#·智能体
呆呆敲代码的小Y14 小时前
【实战精选面试题】C# 面试题详细解答,按难易程度排序
android·java·游戏·c#·游戏开发·unity面试题·c#面试题
淡海水14 小时前
09-01-内存-Unity资源生命周期全景
unity·c#·游戏引擎·.netcore·gc
IT规划师15 小时前
Redis 数据类型全解 - List:用对是队列用错是灾难(二)
redis·消息队列·.net
1-1=015 小时前
.NET Core 编译技术
.net·.netcore
椒颜皮皮虾྅18 小时前
让 C# 读懂整张图:DeploySharp 驱动 PaddleOCR v4/v5/v6,打通 OCR 全流程
开发语言·人工智能·深度学习·学习·c#·ocr·cuda
昂好的day18 小时前
C# 同步异步与多线程:Thread / Task / 线程池一次讲透(上篇)
开发语言·windows·c#
吃一碗粉只付一碗钱1 天前
12-给SPA友好的401和403响应
c#·状态模式