2013-05-07 72 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