我是c#的新手,我在网上寻找有关如何打印pdf的教程,但没有找到。
然后我想,是否可以使用itextpdf来读取它,就像这里提到的一样:
使用itextsharp dll在VB.NET或C#中读取PDF内容
然后打印它。如果可以的话,怎么做?
我是c#的新手,我在网上寻找有关如何打印pdf的教程,但没有找到。
然后我想,是否可以使用itextpdf来读取它,就像这里提到的一样:
使用itextsharp dll在VB.NET或C#中读取PDF内容
然后打印它。如果可以的话,怎么做?
看起来像pdfsharp和migradoc这样的常见工具不能做到这一点(只有在安装了Acrobat(Reader)的情况下,pdfsharp才能实现)。
我在这里找到了相关信息。
代码已准备好复制/粘贴。它使用默认打印机,据我所见,甚至不使用任何库,直接将pdf字节发送到打印机。因此,我认为打印机也需要支持它,在我测试的一个10年前的打印机上,它完美地工作。大多数其他方法 - 没有商业库或应用程序 - 需要您在打印设备上下文中自行绘制。可以做到,但需要一段时间来弄清楚并使其跨打印机工作。
也可以使用嵌入式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);
});
};
}
这取决于您想要打印什么。您需要一个第三方的PDF打印应用程序,或者如果您正在打印自己的数据,则可以使用Visual Studio中的报表查看器。它可以将报表输出为Excel和PDF文件。
我建议您尝试来自以下网址的2Printer命令行工具: http://www.doc2prn.com/
打印文件夹"C:\Input"中所有PDF文件的命令行示例如下。您可以从C#代码中轻松调用它。
2Printer.exe -s "C:\Input*.PDF" -prn "Canon MP610 series Printer"
如果您已经安装了Adobe Reader
,那么您只需要将其设置为默认打印机即可。然后,您就可以轻松地将文件打印成PDF格式啦!
printDocument1.PrinterSettings.PrinterName = "Adobe PDF";
printDocument1.Print();
就是这么简单!!!