使用虚拟打印机驱动程序打印到文件- Console c#

本教程演示如何创建和设置一个LEADTOOLS虚拟打印机,以便用户可以向其打印并将其保存为PDF文件。

概述
总结 本教程介绍如何在c# Console应用程序中安装打印机和捕获打印作业。
完成时间 30分钟
Visual Studio项目 下载教程项目(3kb)
平台 Windows c#控制台应用程序
IDE Visual Studio 2017, 2019
开发许可 下载LEADTOOLS

所需的知识

来熟悉创建项目的基本步骤添加引用和设置License教程,在工作之前使用虚拟打印机驱动程序打印到文件- Console c#教程。

安装时请求Leadtools.Printer.dll

本教程还需要Leadtools.Printer.dll,它只在安装期间通过请求安装到SDK中。在安装过程中,当出现提示时,请确保同时请求Win32和x64 DLL体系结构版本(如果需要这两个版本)。

以管理员身份运行Visual Studio

创建一个新的LEADTOOLS打印机驱动程序并将其添加到机器中,需要Visual Studio在高级管理员权限下运行。

创建项目并添加LEADTOOLS和系统参考

中创建的项目的副本开始添加引用和设置License教程。如果您没有该项目,请按照该教程中的步骤创建它。

所需的参考资料取决于项目的目的。对于这个项目,添加位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64

这个系统。画assembly from .NET is also needed. To add it, right-click on the References in the解决方案资源管理器,然后添加引用。在“程序集”下,查找并选择系统。画

将解决方案资源管理器中的程序集引用添加到虚拟打印机驱动程序项目中

有关应用程序需要哪些DLL文件的完整列表,请参阅要包含在您的申请中的文件

设置License文件

许可证解锁项目所需的特性。它必须在调用任何工具包函数之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时License

有两种类型的运行时许可证:

请注意

中更详细地介绍了添加LEADTOOLS NuGet和本地引用以及设置许可证添加引用和设置License教程。

初始化打印机驱动程序

现在已经将LEADTOOLS引用添加到项目中,可以开始编码了。

首先添加相关代码来创建Printer驱动程序。

在顶端Program.cs使用语句放置以下LEADTOOLS

c#
使用系统;使用System.Collections.Generic;使用System.Drawing.Imaging;使用System.Drawing.Printing;使用先;使用Leadtools;使用Leadtools.Document.Writer;使用Leadtools.Printer;

实例化下面的全局变量程序类:

c#
静态打印机LeadPrinter;静态DocumentWriter DocumentWriter;静态PrinterInfo PrinterInfo;静态字符串OutputFile;

设置打印机和设置许可证

添加SetLicense ()代码与添加引用和设置License教程的Main (string [] args)方法。

接下来,添加SetupPrinter ()方法初始化并安装虚拟打印机:

c#
静态无效主要(字符串[]参数)SetLicense ();SetupPrinter ();控制台。WriteLine ("打印机已安装好,准备接收作业。打印到LEADTOOLS打印机查看它的工作情况。按回车键退出。”);Console.ReadLine ();Printer.UnInstall (PrinterInfo);静态无效SetLicense ()字符串许可证=@ " C: \ \ LEADTOOLS LEADTOOLS22 \ \共同支持\许可证。地方政府投资公司”字符串关键=文件。ReadAllText (@“C: \ LEADTOOLS22 \支持\常见\许可证\ LEADTOOLS.LIC.KEY”);RasterSupport。SetLicense(许可证、关键);如果(RasterSupport.KernelExpired)控制台。WriteLine ("许可证文件无效或过期。");其他的控制台。WriteLine ("License文件设置成功");静态无效SetupPrinter ()<列表字符串> installedPrinters =<列表字符串> ();foreach字符串打印机PrinterSettings.InstalledPrinters)installedPrinters.Add(打印机);字符串printerName =“LEADTOOLS打印机”字符串printerPassword =""字符串documentPrinterRegPath =@”软件\铅技术有限公司\ 21 \打印机\”PrinterInfo =PrinterInfoMonitorName = printerName,PortName = printerName,ProductName = printerName,PrinterName = PrinterName,密码= printerPassword,RegistryKey = documentPrinterRegPath + printerName,RootDir =@ " C: \ LEADTOOLS22 \ Bin \共同\ PrinterDriver \”Url =“//m.ahtuanjie.com”PrinterExe = AppDomain.CurrentDomain.BaseDirectory};如果(! installedPrinters.Contains (printerName))Printer.Install (PrinterInfo);LeadPrinter =打印机(printerName);LeadPrinter。EmfEvent + =EventHandler < EmfEventArgs > (LeadPrinter_EmfEvent);LeadPrinter。JobEvent + =EventHandler < JobEventArgs > (LeadPrinter_JobEvent);DocumentWriter =DocumentWriter ();

添加Emf和作业事件

在上一步中,有些EventHandler代码行被添加到LeadPrinter对象。现在是时候添加EmfEvent而且JobEvent到项目中。

Emf Event将为打印作业的每一页触发。

Job Event将触发两次:第一次是在作业开始时,第二次是在作业结束时。

c#
静态无效LeadPrinter_EmfEvent (对象发送方,EmfEventArgs e)图元文件图元文件=图元文件(e.Stream);DocumentWriterEmfPage documentPage =DocumentWriterEmfPageEmfHandle = metaFile.GetHenhmetafile ()};DocumentWriter.AddPage (documentPage);静态无效LeadPrinter_JobEvent (对象发送方,JobEventArgs e)字符串printerName = e.PrinterName;intjobID = e.JobID;如果(e.JobEventState = = EventState.JobStart)字符串tempDir =@“C: \ Temp”如果(! Directory.Exists (tempDir))Directory.CreateDirectory (tempDir);OutputFile =路径。结合(@“C: \ Temp”Path.ChangeExtension (Path.GetRandomFileName (),“pdf”));DocumentWriter。BeginDocument (OutputFile DocumentFormat.Pdf);控制台。WriteLine ($" {printerName}的作业{jobID}已启动");其他的如果(e.JobEventState = = EventState.JobEnd)DocumentWriter.EndDocument ();控制台。WriteLine ($" {printerName}的作业{jobID}已结束。PDF保存到{OutputFile}");

添加app.manifest指定Admin Privileges

安装新的虚拟打印机需要管理员访问权限。为了在运行之前检查访问权限,请添加app.manifest,将文件添加到项目中csproj,点击添加>新项目>应用程序清单文件(Windows Only)然后单击添加

app.manifest应该是这样的

<? xml version = " 1.0 " encoding = " utf - 8 " ?><组装manifestVersion = " 1.0 " xmlns = " urn: schemas-microsoft-com: asm.v1”><assemblyIdentity version = " 1.0.0.0 " name = " MyApplication。Print_to_File_Using_the_Virtual_Printer_Driver " /><trustInfo xmlns = " urn: schemas-microsoft-com: asm.v2”><安全><requestedPrivileges xmlns = " urn: schemas-microsoft-com: asm.v3”><requestdexecutionlevel level=" requireademanager " uiAccess="false" /></ requestedPrivileges></安全></ trustInfo></组装>

请注意

创建目录C: \ Temp以便将其作为临时文件夹使用。否则,使用路径。GetTempPath使用%TEMP%文件夹。

运行该项目

通过按运行项目F5,或选择调试->开始调试

请注意

此时,如果Visual Studio 2019没有以管理员权限运行,请停止项目并将其设置为以管理员权限运行。需要管理员权限,以便程序可以连接到计算机的文件,以查看当前安装了哪些打印机。

程序运行后,打开任何允许打印的程序。例如,打开记事本,写一条短消息。然后打印到LEADTOOLS打印机这是刚刚安装的。打印到它之后,控制台中显示一条消息,显示刚刚打印的PDF文件的路径。

总结

本教程演示了如何创建和安装一个LEADTOOLS虚拟打印机以将文档打印为PDF文件。

另请参阅

net
iOS
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2022领先的技术公司。保留所有权利。