虽然有用于创建 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 控制台应用程序。
-
在 Visual Studio 中,使用 .NET 8创建一个新的控制台应用程序。
-
在解决方案资源管理器 中,选择您创建的项目,然后从项目 主菜单中选择管理 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 文件的各种方法。