1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > C# 打印PDF文件之使用不同打印机打印所有页面或部分页面

C# 打印PDF文件之使用不同打印机打印所有页面或部分页面

时间:2021-09-27 14:07:15

相关推荐

C# 打印PDF文件之使用不同打印机打印所有页面或部分页面

最近在逛国外各大编程社区论坛的时候,发现很多人都在问一个关于PDF文件打印的问题:打印时如何选择非默认打印机并设置打印页面的范围。而一般情况下,打印时选择的打印机是默认打印机,打印页面范围是所有页面,如果要选择其他打印机或打印部分页面,需要对代码进行一定的设置。我在这里分享一个解决方案,让其他有同样需求的朋友少走点冤枉路。

在这个解决方案中我使用了一个免费的PDF控件,感兴趣的朋友可以在Codeplex官网:上下载。

下面是该解决方案的详细代码分步解析:

第一步:添加项目引用。

安装控件后,创建一个新的项目,找到控件的安装目录,在项目的“解决方案”窗口右击->添加引用,选择和项目.NET Framework版本对应的dll文件进行添加;

如下图:

第二步:使用命名空间。

在该方案中,我使用的命名空间如下:

using Spire.Pdf;using System.Windows.Forms;using System.Drawing.Printing;

第三步:创建一个新的PDF文档,并加载待打印的PDF文件。

PdfDocument doc = new PdfDocument();doc.LoadFromFile("sample.pdf");

如果需要使用默认打印机打印所有页面,请看第四步。如果需要使用其他打印机并设置打印页面范围,请看第五步。

第四步:使用默认打印机打印所有页面。

doc.PrintDocument.Print();

第五步:选择打印机和设置打印页面范围。

PrintDialog dialogPrint = new PrintDialog();dialogPrint.AllowPrintToFile = true;dialogPrint.AllowSomePages = true;dialogPrint.PrinterSettings.MinimumPage = 1;dialogPrint.PrinterSettings.MaximumPage = doc.Pages.Count;dialogPrint.PrinterSettings.FromPage = 1;dialogPrint.PrinterSettings.ToPage = doc.Pages.Count;if (dialogPrint.ShowDialog() == DialogResult.OK){//设置打印的起始页码doc.PrintFromPage = dialogPrint.PrinterSettings.FromPage;//设置打印的终止页码doc.PrintToPage = dialogPrint.PrinterSettings.ToPage;//选择打印机doc.PrinterName = dialogPrint.PrinterSettings.PrinterName;PrintDocument printDoc = doc.PrintDocument;dialogPrint.Document = printDoc;printDoc.Print();}

运行项目,输出的效果图如下(打印机和打印页面范围可以自己选择):

全部代码如下:

using Spire.Pdf;using System.Windows.Forms;using System.Drawing.Printing;namespace PrintPDF{class Program{static void Main(string[] args){PdfDocument doc = new PdfDocument();doc.LoadFromFile("sample.pdf");//Use the default printer to print all the pages//doc.PrintDocument.Print();//Set the printer and select the pages you want to printPrintDialog dialogPrint = new PrintDialog();dialogPrint.AllowPrintToFile = true;dialogPrint.AllowSomePages = true;dialogPrint.PrinterSettings.MinimumPage = 1;dialogPrint.PrinterSettings.MaximumPage = doc.Pages.Count;dialogPrint.PrinterSettings.FromPage = 1;dialogPrint.PrinterSettings.ToPage = doc.Pages.Count;if (dialogPrint.ShowDialog() == DialogResult.OK){doc.PrintFromPage = dialogPrint.PrinterSettings.FromPage;doc.PrintToPage = dialogPrint.PrinterSettings.ToPage;doc.PrinterName = dialogPrint.PrinterSettings.PrinterName;PrintDocument printDoc = doc.PrintDocument;dialogPrint.Document = printDoc;printDoc.Print();}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。