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

+0

сначала создайте такой класс. Вы можете использовать это как: 'CustomPrintPreviewDialog dialog1 = new CustomPrintPreviewDialog(); dialog1.Show(); 'Вам больше не нужен printpreviewdlg. – Zigma

+0

Хммм Я не знаю, как это сделать. – user2162570

Смежные вопросы