2017-12-06 9 views
0

私はwinformで印刷しようとしていますが、文書を印刷すると空白のシートが表示されます。 これは私が印刷してみたとのコードです:?C#で保存されたファイルを印刷する

private PrintDocument printDocument1 = new PrintDocument(); 
    private string stringToPrint; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 


    private void button1_Click(object sender, EventArgs e) 
    { 
     ReadPrint(); 
     printDocument1.Print(); 
    } 

    private void ReadPrint() 
    { 
     string docName = "ejemplo.pdf"; 
     string docPath = @"C:\dir1\"; 
     printDocument1.DocumentName = docName; 
     using (FileStream stream = new FileStream(docPath + docName, FileMode.Open, FileAccess.Read)) 
     using (StreamReader reader = new StreamReader(stream)) 
     { 
      stringToPrint = reader.ReadToEnd(); 
     } 
    } 

    private void printDocument1_PrintPage(object sender, PrintPageEventArgs e) 
    { 
     int charactersOnPage = 0; 
     int linesPerPage = 0; 


     e.Graphics.MeasureString(stringToPrint, this.Font, 
      e.MarginBounds.Size, StringFormat.GenericTypographic, 
      out charactersOnPage, out linesPerPage); 


     e.Graphics.DrawString(stringToPrint, this.Font, Brushes.Black, 
      e.MarginBounds, StringFormat.GenericTypographic); 


     stringToPrint = stringToPrint.Substring(charactersOnPage); 

     e.HasMorePages = (stringToPrint.Length > 0); 
    } 

    private void printButton_Click(object sender, EventArgs e) 
    { 
     LeerArchivo(); 
     printDocument1.Print(); 
    } 

私はそれを修正する方法や、ファイルまたはいくつかのサンプルコードを印刷する他のいくつかの方法があるかどうかを知りたいですか? に関してstringToPrintで

enter image description here

+1

あなたは文字列に(バイナリである)PDFデータをロードしようとしています。そのようには機能しません。 –

+0

@JoelCoehoorn、はい、pdfファイル、これらの場合はどうなりますか? – Danilo

答えて

0

あなたはstringToPrintが空またはnullでないことを確認していますか?私は同じことを使用しており、それは完全に動作します。印刷するドキュメントが空白でないかどうかを確認する場合は、PrintPreviewDialogを追加してください。最初に変数をチェックしてください。

e.Graphics.DrawString("SomeString", new Font("Arial", 12, FontStyle.Bold), Brushes.Black, new Point(580, 510)); 

e.Graphics.DrawString("SomeString1", new Font("Arial", 12, FontStyle.Bold), Brushes.Black, new Point(700, 510)); 

パラメータnew Point()には、x座標とy座標を使用してテキストが表示されます。

+0

質問を編集するには、stringToPrintに写真のデータがあり、Googleで探しているコードをコピーします。私がルートにアクセスする権限を持っていなかったというエラーが出たので、FileAccess.Readがそれに追加された違い。 – Danilo

+0

編集を参照してください。それは助けるかもしれない。 –

1

Vb.netにはPrintFormメソッドがありますが、C#にはWindowsフォームを印刷するための組み込みメソッドがありません。

実行時にC#.netでWindowsフォームを印刷するには:基本的なコンセプトは、実行時にjpeg形式でFormの画面イメージをキャプチャし、Printボタンをクリックするなどのイベントに印刷することです。

print

関連する問題