2013-05-07 97 views
1

我有這個代碼PrintPreview和打印。另存爲PDF在PrintPreview

private void button2_Click_1(object sender, EventArgs e) 
    { 
     printPreviewDialog1.Document = printDocument1; 
     printPreviewDialog1.ShowDialog();  
    } 
private void printDocument1_PrintPage_1(object sender, System.Drawing.Printing.PrintPageEventArgs e) 
    { 
     e.Graphics.DrawImage(Logo.Image, 800, 100); 
     e.Graphics.DrawString(label20.Text, label20.Font, Brushes.Black, 134, 100); 
     e.Graphics.DrawString(label22.Text, label22.Font, Brushes.Black, 462, 100); 
     e.Graphics.DrawString(textBox101.Text, textBox101.Font, Brushes.Black, 134, 230); 
     e.Graphics.DrawString(textBox104.Text, textBox104.Font, Brushes.Black, 134, 270); 

現在我怎樣才能保存與printPreview相同的輸出作爲PDF文件與另一個buttonClick操作或打印預覽窗口。

回答

4

如果您已經使用WinForms的打印功能,它將是最簡單的解決方案,安裝PDF打印機程序,例如, PDFCreator。安裝後可以像真正的打印機一樣使用,但會保存PDF文件。

如果你想在你的應用程序中建立功能,你應該檢查出this question

1

如果您在創建自己的過程中有所保證,您可以使用this

在PrintPreviewDialougue中添加一個按鈕;

class CustomPrintPreviewDialog : System.Windows.Forms.PrintPreviewDialog 
    { 
     public CustomPrintPreviewDialog() 
      : base() 

     { 
      if(this.Controls.ContainsKey("toolstrip1")) 
      { 

       ToolStrip tStrip1 = (ToolStrip)this.Controls["toolstrip1"]; 
       ToolStripButton button1 = new ToolStripButton(); 
       button1.Text = "Save"; 
       button1.Click += new EventHandler(SaveDocument); 
       button1.Visible = true; 
       tStrip1.Items.Add(button1); 
      } 
     } 

     protected void SaveDocument(object sender, EventArgs e) 
     { 
      // code for save the document 
      MessageBox.Show("OK"); 
     } 
    } 

來源:Codeproject

+0

我可以只添加一個我printPreviewDialog1這行? – user2162570 2013-05-07 19:37:17

+0

先創建一個這樣的類。你可以這樣使用它:'CustomPrintPreviewDialog dialog1 = new CustomPrintPreviewDialog(); dialog1.Show();'你不需要printpreviewdlg了。 – Zigma 2013-05-07 19:39:00

+0

嗯,我不知道如何做到這一點。 – user2162570 2013-05-07 20:30:17