C# 不使用外部工具打印PDF
我们需要从c#应用程序打印PDF(无需安装外部库,也无需打印对话框) 我知道有很多关于它的讨论(大多是过时的解决方案或免费软件工具/库),但也许有人可以告诉我实现这一点的最佳解决方案?如果我能找到一种简单的方法将PDF页面转换为图像,另一种方法是将PDF转换为图像,并将图像直接发送到打印机C# 不使用外部工具打印PDF,c#,wpf,pdf,printing,pdf-conversion,C#,Wpf,Pdf,Printing,Pdf Conversion,我们需要从c#应用程序打印PDF(无需安装外部库,也无需打印对话框) 我知道有很多关于它的讨论(大多是过时的解决方案或免费软件工具/库),但也许有人可以告诉我实现这一点的最佳解决方案?如果我能找到一种简单的方法将PDF页面转换为图像,另一种方法是将PDF转换为图像,并将图像直接发送到打印机 谢谢 这不需要库,但需要在应用程序所在的计算机上安装Adobe Reader DC。如果您不想使用任何类型的外部工具,那么您需要创建自己的功能来实现这一点。Adobe Reader DC可以通过命令调用,以允
谢谢 这不需要库,但需要在应用程序所在的计算机上安装Adobe Reader DC。如果您不想使用任何类型的外部工具,那么您需要创建自己的功能来实现这一点。Adobe Reader DC可以通过命令调用,以允许您打印文档。对于错误处理或关闭流程而言,这根本不是一个优雅的解决方案,但它是一个可以调整的框架:
private static void PrintDocument(string fileName)
{
var process = new Process
{
StartInfo =
{
WindowStyle = ProcessWindowStyle.Hidden,
Verb = "print",
FileName = @"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe", //You could use an app config string here
Arguments = $@"/p /h {fileName}",
UseShellExecute = false,
CreateNoWindow = true
}
};
process.Start();
if (process.HasExited == false)
{
process.WaitForExit(10000);
}
process.EnableRaisingEvents = true;
try
{
//Try to gracefully exit the process first
var proccessIsClosed = process.CloseMainWindow();
//If it doesn't gracefully close, kill the process
if (!proccessIsClosed)
{
process.Kill();
}
}
catch
{
throw new Exception("Process ID " + process.Id +
" is unable to gracefully close. Please check current running processes.");
}
}
您可以在没有打印对话框的情况下打印,但仍然无法将PDF直接发送到打印机。谢谢!但我并不需要启动adobe进程来打印文档,因为我们可以看到adobe reader在将文档发送到打印机之前弹出。如果我想尝试使用外部库在网络打印机上打印pdf文档,那么最好的/小型库是什么?这里提到了一些第三方库/解决方案:。我没有亲自使用过它们,所以我不能说在打印过程中是否会出现弹出窗口。