WPF 打印控件 無彈框打印。


WPF中打印用到了 PrintDialog類。

其中設置打印屬性的是PrintTicket,管理打印機的是PrintQueue。

實例如下:

public class PrintDialogHelper
{
private const string PrintServerName = "YULIN-PC";
private const string PrintName = "HP LaserJet M1522 series PCL6 Class Driver";

public PrintDialogHelper()
{
}

/// <summary>
/// 打印控件
/// </summary>
/// <param name="element"></param>
public void PrintVisual(FrameworkElement element)
{
var printDialog = new PrintDialog();
SetPrintProperty(printDialog);
var printQueue = SelectedPrintServer(PrintServerName, PrintName);
if (printQueue != null)
{
printDialog.PrintQueue = printQueue;
printDialog.PrintVisual(element, "");
}
}

/// <summary>
/// 查找並獲取打印機
/// </summary>
/// <param name="printerServerName">服務器名字: Lee-pc</param>
/// <param name="printerName">打印機名字:Hp laserjet m1522 mfp series pcl 6 </param>
/// <returns></returns>
public PrintQueue SelectedPrintServer(string printerServerName, string printerName)
{
try
{
var printers = PrinterSettings.InstalledPrinters;//獲取本機上的所有打印機
PrintServer printServer = null;

foreach (string printer in printers)
{
if (printer.Contains(printerName))
printServer = new PrintServer("\\\\" + printerServerName);
}

if (printServer == null) return null;//沒有找到打印機服務器

var printQueue = printServer.GetPrintQueue(printerName);
return printQueue;
}
catch (Exception)
{
return null;//沒有找到打印機
}
}

/// <summary>
/// 設置打印格式
/// </summary>
/// <param name="printDialog">打印文檔</param>
/// <param name="pageSize">打印紙張大小 a4</param>
/// <param name="pageOrientation">打印方向 豎向</param>
public void SetPrintProperty(PrintDialog printDialog, PageMediaSizeName pageSize = PageMediaSizeName.ISOA4, PageOrientation pageOrientation = PageOrientation.Portrait)
{
var printTicket = printDialog.PrintTicket;
printTicket.PageMediaSize = new PageMediaSize(pageSize);//A4紙
printTicket.PageOrientation = pageOrientation;//默認豎向打印
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM