自动化文档打印流程

在现代办公环境中,自动化文档打印是一个常见的需求。本文将介绍如何通过编程实现自动化文档打印流程,包括获取打印机名称、文档标题、设置打印进程等步骤。

获取打印机名称

首先,需要获取默认打印机的名称。这可以通过创建一个打印对话框对象来实现。以下是实现此功能的C#代码示例:

private static void getPrinterName() { PrintDialog pt = new PrintDialog(); printerName = pt.PrinterSettings.PrinterName; }

在上述代码中,创建了一个PrintDialog对象,并从中获取了打印机的名称。

获取文档标题

接下来,需要获取PDF文档的标题。这可以通过使用iTextSharp库来实现。以下是实现此功能的C#代码示例:

private static void getDocumentTitle() { iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(printFileName); documentTitle = reader.Info["Title"]; }

在上述代码中,创建了一个PdfReader对象,并从中获取了PDF文档的标题。

设置打印进程

现在,需要将打印进程的主要元素组合在一起,并设置启动进程以使用Adobe,并传递文档位置和打印机作为参数。以下是实现此功能的C#代码示例:

private static void setProcess() { string flagNoSplashScreen = "/s /o"; string flagOpenMinimized = "/h"; var flagPrintFileToPrinter = string.Format("/t \"{0}\" \"{1}\"", printFileName, printerName); var args = string.Format("{0} {1} {2}", flagNoSplashScreen, flagOpenMinimized, flagPrintFileToPrinter); startInfo = new ProcessStartInfo { FileName = applicationPath, Arguments = args, CreateNoWindow = true, ErrorDialog = false, UseShellExecute = false, Verb = "print", WindowStyle = ProcessWindowStyle.Minimized, RedirectStandardInput = true, RedirectStandardOutput = false }; }

在上述代码中,设置了启动进程的参数,包括不显示启动画面、最小化窗口、打印文件到打印机等。

注册表获取应用程序路径

为了获取Adobe应用程序的路径,需要从系统注册表中获取。以下是实现此功能的C#代码示例:

private static List> RegistrationKey; private static string allocatedPath; public static string Allocate() { createRegistrationKey(); getInstalledApplicationPath(); return allocatedPath; } private static void createRegistrationKey() { RegistrationKey = new List>(); RegistrationKey.Add(new Tuple("Adobe", @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Acrobat.EXE")); RegistrationKey.Add(new Tuple("Adobe32", @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AcroRD32.EXE")); } private static void getInstalledApplicationPath() { allocatedPath = string.Empty; foreach (var s in RegistrationKey) { allocatedPath = getRegistryApplicationPath(s.Item2); if (!string.IsNullOrEmpty(allocatedPath)) { break; } } } private static string getRegistryApplicationPath(string applicationKey) { RegistryKey key = Registry.LocalMachine.OpenSubKey(applicationKey); if (key != null) { return key.GetValue("").ToString(); } return String.Empty; }

在上述代码中,首先创建了一个注册表键的列表,然后检查注册表以获取Adobe应用程序的路径。

运行打印进程

最后,需要运行打印进程。以下是实现此功能的C#代码示例:

public static void Print(string path) { printFileName = path; getDocumentTitle(); getPrinterName(); setTracking(); applicationPath = PDFLibrary.ApplicationEXEPath.Allocate(); if (!String.IsNullOrEmpty(applicationPath)) { setProcess(); using (var process = Process.Start(startInfo)) { process.CloseMainWindow(); process.Kill(); } } }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485