从PDF文件打印特定页面,而无需用户交互

时间:2018-12-04 14:21:00

标签: c# asp.net asp.net-mvc

例如,我在内部服务器上有一个30页长的PDF文件。用户希望有一个按钮,仅打印其第五,第六,第七页。

无需用户交互即可从URL下载PDF,URL始终包含一个.pdf文件:

public void DownloadFileToLocalFolder(string urlToPdf)
    {
        using (WebClient wc = new WebClient())
        {
            wc.UseDefaultCredentials = true;
            wc.DownloadFile(new System.Uri(urlToPdf), "C:\\Pdf\1.pdf");
        }
    }

无需用户干预即可将此文件打印到默认打印机:

public void PrintFile(string path)
    {
        var pi = new ProcessStartInfo(path);
        process.UseShellExecute = true;
        process.Verb = "print";
        var process = System.Diagnostics.Process.Start(process);
    }

如何从PDF文件将特定页面发送到打印机?

1 个答案:

答案 0 :(得分:1)

  

告诉打印机要打印文件的哪一页的唯一方法是   使用“打印”对话框操纵页面设置

但是

  • 那不是“沉默的”,因为它会显示打印对话框
  • 这也必须在WinForms / WPF应用程序而不是Web应用程序中完成
  • 不使用System.Diagnostics.Process.Start()

解决方案-在将文件发送到打印机之前对其进行修改!

  • 获取PDF作为流,以避免两次将其保存到磁盘,但是您也可以这样做
  • 根据您的业务逻辑,使用PDF库(例如itextsharp)制作仅包含所需页面的新PDF
  • 保存仅包含所需页面的结果PDF
  • 然后在修改后的PDF上调用PrintFile()

查看示例: https://forums.asp.net/t/1630140.aspx