在C#中打印PDF

51

我是c#的新手,我在网上寻找有关如何打印pdf的教程,但没有找到。

然后我想,是否可以使用itextpdf来读取它,就像这里提到的一样:

使用itextsharp dll在VB.NET或C#中读取PDF内容

然后打印它。如果可以的话,怎么做?

16个回答

1

看起来像pdfsharp和migradoc这样的常见工具不能做到这一点(只有在安装了Acrobat(Reader)的情况下,pdfsharp才能实现)。

我在这里找到了相关信息。

https://vishalsbsinha.wordpress.com/2014/05/06/how-to-programmatically-c-net-print-a-pdf-file-directly-to-the-printer/

代码已准备好复制/粘贴。它使用默认打印机,据我所见,甚至不使用任何库,直接将pdf字节发送到打印机。因此,我认为打印机也需要支持它,在我测试的一个10年前的打印机上,它完美地工作。

大多数其他方法 - 没有商业库或应用程序 - 需要您在打印设备上下文中自行绘制。可以做到,但需要一段时间来弄清楚并使其跨打印机工作。


0

也可以使用嵌入式Web浏览器来实现,但需要注意的是,由于这可能是一个本地文件,并且因为它实际上不是直接的浏览器,所以没有DOM,也没有准备就绪状态。

以下是我在Win表单Web浏览器控件上工作出的方法的代码:

    private void button1_Click(object sender, EventArgs e)
    {
        webBrowser1.Navigate(@"path\to\file");
    }  

    private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
    {   
        //Progress Changed fires multiple times, however after the Navigated event it is fired only once,
        //and at this point it is ready to print
        webBrowser1.ProgressChanged += (o, args) => 
        {
            webBrowser1.Print();//Note this does not print only brings up the print preview dialog
            //Should be on a separate task to ensure the main thread 
            //can fully initialize the print dialog 
            Task.Factory.StartNew(() => 
            {
                Thread.Sleep(1000);//We need to wait before we can send enter
                //This assumes that the print preview is still in focus
                Action g = () =>
                {
                    SendKeys.SendWait("{ENTER}");
                };
                this.Invoke(g);
            });
        };
    }

0

这取决于您想要打印什么。您需要一个第三方的PDF打印应用程序,或者如果您正在打印自己的数据,则可以使用Visual Studio中的报表查看器。它可以将报表输出为Excel和PDF文件。


0

我建议您尝试来自以下网址的2Printer命令行工具: http://www.doc2prn.com/

打印文件夹"C:\Input"中所有PDF文件的命令行示例如下。您可以从C#代码中轻松调用它。

2Printer.exe -s "C:\Input*.PDF" -prn "Canon MP610 series Printer"


-1

如果您已经安装了Adobe Reader,那么您只需要将其设置为默认打印机即可。然后,您就可以轻松地将文件打印成PDF格式啦!

printDocument1.PrinterSettings.PrinterName = "Adobe PDF";
printDocument1.Print();

就是这么简单!!!


-2
使用Ultimate PDF的直观API,只需几行代码即可打开、导入、编辑、合并和转换Acrobat PDF文档。该组件使用100%的C#托管代码,利用.NET Framework的众多内置功能来提高性能。此外,该库符合CLS标准,并且不使用任何不安全的块以满足最小权限要求。这些类都有详细的示例代码进行完整记录,有助于缩短您的学习曲线。如果您的开发环境是Visual Studio,则可以享受在线文档的完全集成。只需在Visual Studio IDE中标记或选择关键字,然后按F1键,即可立即查看在线文档。这是一个高性能、可靠的PDF库,让您可以轻松地通过几行代码将PDF功能添加到您的.NET应用程序中。

PDF Component for NET


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接