本教程演示如何创建和设置一个LEADTOOLS虚拟打印机,以便用户可以向其打印并将其保存为PDF文件。
概述 | |
---|---|
总结 | 本教程介绍如何在c# Console应用程序中安装打印机和捕获打印作业。 |
完成时间 | 30分钟 |
Visual Studio项目 | 下载教程项目(3kb) |
平台 | Windows c#控制台应用程序 |
IDE | Visual Studio 2017, 2019 |
开发许可 | 下载LEADTOOLS |
来熟悉创建项目的基本步骤添加引用和设置License教程,在工作之前使用虚拟打印机驱动程序打印到文件- Console c#教程。
本教程还需要Leadtools.Printer.dll,它只在安装期间通过请求安装到SDK中。在安装过程中,当出现提示时,请确保同时请求Win32和x64 DLL体系结构版本(如果需要这两个版本)。
创建一个新的LEADTOOLS打印机驱动程序并将其添加到机器中,需要Visual Studio在高级管理员权限下运行。
中创建的项目的副本开始添加引用和设置License教程。如果您没有该项目,请按照该教程中的步骤创建它。
所需的参考资料取决于项目的目的。对于这个项目,添加位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64
:
Leadtools.Printer.dll
Leadtools.Codecs.dll
Leadtools.dll
Leadtools.Pdf.dll
Leadtools.Document.Writer.dll
这个系统。画assembly from .NET is also needed. To add it, right-click on the References in the解决方案资源管理器,然后添加引用。在“程序集”下,查找并选择系统。画
.
有关应用程序需要哪些DLL文件的完整列表,请参阅要包含在您的申请中的文件.
许可证解锁项目所需的特性。它必须在调用任何工具包函数之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时License.
有两种类型的运行时许可证:
请注意
中更详细地介绍了添加LEADTOOLS NuGet和本地引用以及设置许可证添加引用和设置License教程。
现在已经将LEADTOOLS引用添加到项目中,可以开始编码了。
首先添加相关代码来创建Printer驱动程序。
在顶端Program.cs
使用语句放置以下LEADTOOLS
使用系统;
使用System.Collections.Generic;
使用System.Drawing.Imaging;
使用System.Drawing.Printing;
使用先;
使用Leadtools;
使用Leadtools.Document.Writer;
使用Leadtools.Printer;
实例化下面的全局变量程序
类:
静态打印机LeadPrinter;
静态DocumentWriter DocumentWriter;
静态PrinterInfo PrinterInfo;
静态字符串OutputFile;
添加SetLicense ()
代码与添加引用和设置License教程的Main (string [] args)
方法。
接下来,添加SetupPrinter ()
方法初始化并安装虚拟打印机:
静态无效主要(字符串[]参数)
{
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 =新PrinterInfo
{
MonitorName = 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 ();
}
在上一步中,有些EventHandler
代码行被添加到LeadPrinter
对象。现在是时候添加EmfEvent而且JobEvent到项目中。
Emf Event将为打印作业的每一页触发。
Job Event将触发两次:第一次是在作业开始时,第二次是在作业结束时。
静态无效LeadPrinter_EmfEvent (对象发送方,EmfEventArgs e)
{
图元文件图元文件=新图元文件(e.Stream);
DocumentWriterEmfPage documentPage =新DocumentWriterEmfPage
{
EmfHandle = 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
,将文件添加到项目中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文件。