2013-06-03 149 views
0

目前我正在使用silverlight 4,我們將基於Windows的應用程序轉換爲silverlight。在基於Windows的應用程序中打印字符串很容易使用COM,但像Silverlight這樣的客戶端應用程序可以打印字符串值嗎?Silverlight打印字符串值

我不得不將其轉換爲Silverlight的:

Dim PD As New PrintDialog 
PD.UseEXDialog = True 
PD.PrinterSettings = New System.Drawing.Printing.PrinterSettings 
If (Windows.Forms.DialogResult.OK = PD.ShowDialog()) Then 
    ZPLZebra.RawPrinterHelper.SendStringToPrinter(PD.PrinterSettings.PrinterName, *******.ToString()) 
End If 

編輯1:

 public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, int dwCount) 
    { 
     IntPtr hPrinter = new IntPtr(0); 
     DOCINFOA di = new DOCINFOA(); 
     bool flag = false; 
     di.pDocName = "My C#.NET RAW Document"; 
     di.pDataType = "RAW"; 
     if (OpenPrinter(szPrinterName, out hPrinter, 0L)) 
     { 
      if (StartDocPrinter(hPrinter, 1, di)) 
      { 
       if (StartPagePrinter(hPrinter)) 
       { 
        int dwWritten = 0; 
        flag = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten); 
        EndPagePrinter(hPrinter); 
       } 
       EndDocPrinter(hPrinter); 
      } 
      ClosePrinter(hPrinter); 
     } 
     if (!flag) 
     { 
      Marshal.GetLastWin32Error(); 
     } 
     return flag; 
    } 

    public static bool SendStringToPrinter(string szPrinterName, string szString) 
    { 
     int length = szString.Length; 
     IntPtr pBytes = Marshal.StringToCoTaskMemAnsi(szString); 
     SendBytesToPrinter(szPrinterName, pBytes, length); 
     Marshal.FreeCoTaskMem(pBytes); 
     return true; 
    } 

編號:(這是我確切的要求) - Printing "raw text" (ZPL) from Web

回答

0

你可以使用PrintDocument.Print方法並在PageVisual中發送帶有文本塊的網格?在C#

示例代碼

/// <summary> 
/// Text to print. 
/// </summary> 
private string _textToPrint; 

/// <summary> 
/// Method that print text. 
/// </summary> 
/// <param name="textToPrint">Text to print</param> 
/// <param name="documentName">Optional document name.</param> 
public void SendStringToPrinter(string textToPrint, string documentName = "My Document") 
{ 
    // Set print content in private property 
    _textToPrint = textToPrint; 
    // Create a new print dialog 
    PrintDocument pd = new PrintDocument(); 
    // Catch print event 
    pd.PrintPage += onPrintPage; 
    // Start print request 
    pd.Print(documentName); 
} 
/// <summary> 
/// Called during printing. 
/// </summary> 
/// <param name="sender"></param> 
/// <param name="e"></param> 
void onPrintPage(object sender, PrintPageEventArgs e) 
{ 
    // Create a UI element (simple grid with textblock inside). 
    var grid = new Grid(); 
    grid.Children.Add(new TextBlock() 
    { 
     Text = _textToPrint 
    }); 
    // Add the grid to print visual. 
    e.PageVisual = grid; 
} 

您可以撥打:

SendStringToPrinter(*******.ToString()); 
+0

感謝您的回覆,打印文檔將只需要要打印的文件,我們不能原始文本發送到打印機。 – Prabu

+0

我需要發送字符串值給打印機,而不是文件,如圖像或文檔 – Prabu

+0

我添加了代碼來說明答案:D這是您等待的答案嗎? – Tonio