【问题标题】:Print PDF without external tool [closed]无需外部工具即可打印 PDF [关闭]
【发布时间】:2016-10-06 07:58:45
【问题描述】:

我们需要从我们的 c# 应用程序打印 PDF(不需要安装外部库,也不需要打印对话框)

我知道有很多关于它的讨论(主要是过时的解决方案或免费软件工具/库),但也许有人可以指出实现这一目标的最佳解决方案?如果我能找到一种将 PDF 页面转换为图像的简单方法,另一种方法可能是将 PDF 转换为图像并将图像直接发送到打印机。

谢谢!

【问题讨论】:

  • 您可以在没有打印对话框的情况下进行打印,但您仍然无法将 PDF 直接发送到打印机。

标签: c# wpf pdf printing pdf-conversion


【解决方案1】:

这不需要库,但需要您在应用程序所在的计算机上安装 Adob​​e Reader DC。如果您不想使用任何类型的外部工具,那么您需要创建自己的功能来执行此操作。可以使用命令调用 Adob​​e 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.");
        }
    }

【讨论】:

  • 谢谢!但是我不需要启动 adobe 进程来打印文档,因为我们可以看到 adobe reader 在将文档发送到打印机之前弹出。如果我想尝试使用外部库将 pdf 文档打印到网络打印机,那么最好的/小型库是什么?
  • 这里提到了一些第三方库/解决方案:stackoverflow.com/questions/5566186/print-pdf-in-c-sharp。我个人没有使用过任何一个,所以我不能说在打印过程中是否会出现弹出窗口。
猜你喜欢
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 2023-03-21
  • 2011-08-07
  • 1970-01-01
相关资源
最近更新 更多