插件Spire.PDF幫你高效搞定PDF列印
Spire.PDF介紹
Spire.PDF是一個專業的PDF組件,能夠獨立地創建、編寫、編輯、操作和閱讀PDF文件,支援 .NET、Java、WPF和Silverlight。Spire.PDF的PDF API擁有豐富的功能,如安全設置(包括數字簽名)、PDF文本/附件/圖片提取、PDF文件合併/拆分、元數據更新、章節和段落優化、圖形/影像描繪和插入、表格創建和處理、數據導入等等。
本文將介紹以下幾種常見方式:
-
使用默認印表機列印PDF文檔
-
使用虛擬印表機(Microsoft XPS Document Writer)列印PDF文檔
-
指定印表機及PDF文檔列印頁碼範圍
-
靜默列印PDF文檔
-
雙面列印PDF文檔
- 完整列印過程
使用默認印表機
//載入PDF文檔 PdfDocument doc = new PdfDocument(); doc.LoadFromFile("Test.pdf"); //使用默認印表機列印文檔所有頁面 doc.PrintDocument.Print();
使用虛擬印表機(Microsoft XPS Document Writer)
//載入PDF文檔 PdfDocument doc = new PdfDocument(); doc.LoadFromFile("Test.pdf"); //選擇Microsoft XPS Document Writer印表機 doc.PrintDocument.PrinterSettings.PrinterName = "Microsoft XPS Document Writer"; //列印PDF文檔到XPS格式 doc.PrintDocument.PrinterSettings.PrintToFile = true; doc.PrintDocument.PrinterSettings.PrintFileName = "PrintToXps.xps"; doc.PrintDocument.Print();
指定印表機及文檔列印頁碼範圍
//載入PDF文檔 PdfDocument doc = new PdfDocument(); doc.LoadFromFile("Test.pdf"); //設置列印對話框屬性 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(); }
靜默列印
//載入PDF文檔 var doc = new PdfDocument(); doc.LoadFromFile("Test.pdf"); //靜默列印PDF文檔 PrintDocument printDoc = doc.PrintDocument; printDoc.PrintController = new StandardPrintController(); printDoc.Print();
雙面列印
//載入PDF文檔 PdfDocument doc = new PdfDocument(); doc.LoadFromFile("Test.pdf"); //判斷印表機是否支援雙面列印 bool isDuplex = doc.PrintDocument.PrinterSettings.CanDuplex; if (isDuplex) { //如果支援則設置雙面列印模式,可選:Default/Simplex/Horizontal/Vertical doc.PrintDocument.PrinterSettings.Duplex = Duplex.Default; //列印文檔 doc.PrintDocument.Print(); }
完整列印過程
/// <summary> /// 列印介面 /// </summary> //入參:訂單號、待列印文件全路徑、單雙面、顏色、紙張大小、紙張克重、列印範圍、列印份數等,後續待補充 public void Print(string filepath, string frompage, string topage, string copies, string duplex, string color, string papersizes, string print) { try { if (print == "") { MessageBox.Show("請選擇印表機!"); return; } if (filepath == "") { MessageBox.Show("請選擇列印文件路徑!"); return; } PdfDocument doc = new PdfDocument(); doc.LoadFromFile(filepath); doc.PrintSettings.PrinterName = print; //設置文檔列印頁碼範圍 doc.PrintSettings.SelectPageRange(Convert.ToInt32(frompage), Convert.ToInt32(topage)); //列印不連續的頁面 //doc.PrintSettings.SelectSomePages(new int[] { 1, 3, 5, 7 }); //判斷印表機是否支援雙面列印 if (doc.PrintSettings.CanDuplex) { //如果支援則設置雙面列印模式,可選:Default/Simplex/Horizontal/Vertical switch (duplex) { case "雙面列印": doc.PrintSettings.Duplex = Duplex.Default; break; case "雙面水平列印": doc.PrintSettings.Duplex = Duplex.Horizontal; break; case "單面列印": doc.PrintSettings.Duplex = Duplex.Simplex; break; case "雙面垂直列印": doc.PrintSettings.Duplex = Duplex.Vertical; break; default: doc.PrintSettings.Duplex = Duplex.Simplex; break; } } if (color == "黑白") { //黑白列印PDF文檔 doc.PrintSettings.Color = false; } else { doc.PrintSettings.Color = true; } //設置列印份數為1份 doc.PrintSettings.Copies = Convert.ToInt16(copies); PaperSize p = null; //遍歷印表機紙盒裡面的紙張,找到需要的A3 foreach (PaperSize ps in printDoc.PrinterSettings.PaperSizes) { if (ps.PaperName.Equals(papersizes)) { p = ps; break; } } //設置列印的紙張大小為A3 doc.PrintSettings.PaperSize = p; //靜默列印PDF文檔 doc.PrintSettings.PrintController = new StandardPrintController(); doc.PrintSettings.EndPrint += PrintSettings_EndPrint; //使用默認印表機列印文檔所有頁面 doc.Print(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void PrintSettings_EndPrint(object sender, PrintEventArgs e) { MessageBox.Show("列印成功!"); }
支援選擇印表機、紙張設置、雙面列印、彩色列印、列印份數和列印頁碼範圍等等都可以進行控制!
如有編程方面的交流可加群:186841119,一起相互交流學習進步!