2016-03-21 84 views
1

私はEssential Objectsを使用してHTMLファイルをPDFに変換していますが、これは完全に機能しており、PDFを以下の方法でハードディスクに保存できます。MemoryStreamまたはPdfDocumentまたはPdfPageオブジェクトに保存されているPDFファイルをプリンタに印刷するにはどうすればよいですか?

HtmlToPdf.ConvertUrl(htmlFileName, outputFileName); 

ファイルに変換するだけでなく、任意の.NET Streamオブジェクトに変換することもできます。たとえば、MemoryStreamオブジェクトに変換してから、MemoryStreamからPDFファイルの生のバイトを取得し、電子メールやその他の目的に添付することができます。

HtmlToPdf.ConvertHtml(htmlCode, memoryStream or pdfDocument or pdfPage); 

今私の問題は、どのように私は、プリンタにMemoryStreamまたはPdfDocumentまたはPdfPageに保存されたPDFファイルを印刷することができるということですか?

答えて

0

PrintDocumentを見て、その方法はC#で印刷するときに行く。 msdnサイトから引用するには

通常、PrintDocumentクラスのインスタンスを作成し、DocumentNameやPrinterSettingsなどのプロパティを設定し、Printメソッドを呼び出して印刷プロセスを開始します。 PrintPageEventArgsのGraphicsGraphicsプロパティを使用して、印刷する出力を指定するPrintPageイベントを処理します。

+0

私はによって提供さGraphicsオブジェクトを使用して、それを印刷することはできませんので、既にメモリ内に作成したPDFファイルを持っていますPrintDocument!グラフィックスオブジェクトは、グラフィックスと文字列を描画するためのものですが、pdfファイルは描画しません。 – Muhammad

0

多分、この方法は役に立ちます。

public void Print(string printerName, string fileName) 
    { 
     if (String.IsNullOrEmpty(fileName)) 
      return; 

     var url = fileName; 
     var filePath = String.Format(@"{0}\{1}.pdf", Application.StartupPath, Guid.NewGuid().ToString()); 

     using (var client = new WebClient()) 
     { 
      client.Proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 
      client.DownloadFile(url, filePath); 
     } 

     if (String.IsNullOrEmpty(Form1.SelectedPrinter)) 
      return; 

     PrintDocument pdoc = new PrintDocument(); 

     pdoc.DefaultPageSettings.PrinterSettings.PrinterName = printerName; 
     pdoc.DefaultPageSettings.Landscape = true; 
     pdoc.DefaultPageSettings.PaperSize.Height = 140; 
     pdoc.DefaultPageSettings.PaperSize.Width = 104; 


     try 
     { 
      ProcessStartInfo gsProcessInfo; 
      Process gsProcess; 

      gsProcessInfo = new ProcessStartInfo(); 
      gsProcessInfo.Verb = "PrintTo"; 
      gsProcessInfo.CreateNoWindow = true; //The default is false. 
      gsProcessInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      gsProcessInfo.FileName = filePath; 
      gsProcessInfo.Arguments = "\"" + printerName + "\""; 
      gsProcess = Process.Start(gsProcessInfo); 
      gsProcess.WaitForExit(4000); 
      if (gsProcess.HasExited == false) 
      { 
       gsProcess.Kill(); 
      } 
      gsProcess.EnableRaisingEvents = true; 

      gsProcess.Close(); 
     } 
     catch (Exception) 
     { 
     } 
    } 
0

あなたはHiQPdf libraryからPDFPrinterのクラスを使用してプリンタにPDF文書を印刷することができます。

PdfPrinter pdfPrinter = new HiQPdf.PdfPrinter(); 
pdfPrinter.PrintPdf(pdfStream); 
関連する問題