Bootstrap

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

;