PrintDocument (Clase)

PrintDocument (Clase)

Actualización: noviembre 2007

Define un objeto reutilizable que envía el resultado a una impresora cuando se imprime desde una aplicación de formularios Windows Forms.

Espacio de nombres:  System.Drawing.Printing
Ensamblado:  System.Drawing (en System.Drawing.dll)

public class PrintDocument : Component
public class PrintDocument extends Component
public class PrintDocument extends Component

Normalmente, se crea una nueva instancia de la clase PrintDocument, se establecen las propiedades que describen cómo imprimir y se llama al método Print para iniciar el proceso de impresión. Para especificar el resultado que se va a imprimir, hay que controlar el evento PrintPage y utilizar Graphics que se incluyen en PrintPageEventArgs.

Para obtener más información sobre cómo imprimir desde una aplicación de formularios Windows Forms, vea la información general del espacio de nombres System.Drawing.Printing. Si desea imprimir desde una aplicación de formularios Windows Presentation Foundation, vea el espacio de nombres System.Printing.

En el siguiente ejemplo de código se imprime el archivo denominado C:\My Documents\MyFile.txt en la impresora predeterminada. Para ejecutar el ejemplo, hay que cambiar la ruta de acceso al mapa de bits que desea imprimir. También se puede modificar el procedimiento InitializeComponent mediante el Diseñador de Windows Forms.

68eybb19.alert_note(es-es,VS.90).gifNota:

El ejemplo requiere que cada línea se ajuste al ancho de página.

Utilice los espacios de nombres System.ComponentModel, System.Windows.Forms, System.Drawing, System.Drawing.Printing e System.IO para este ejemplo.

using System;
using System.IO;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;


 public class PrintingExample : System.Windows.Forms.Form 
 {
     private System.ComponentModel.Container components;
     private System.Windows.Forms.Button printButton;
     private Font printFont;
     private StreamReader streamToPrint;

    public PrintingExample() : base() 
    {
       // The Windows Forms Designer requires the following call.
       InitializeComponent();
    }

    // The Click event is raised when the user clicks the Print button.
    private void printButton_Click(object sender, EventArgs e) 
    {
       try 
       {
           streamToPrint = new StreamReader
              ("C:\\My Documents\\MyFile.txt");
           try 
           {
              printFont = new Font("Arial", 10);
              PrintDocument pd = new PrintDocument();
              pd.PrintPage += new PrintPageEventHandler
                 (this.pd_PrintPage);
              pd.Print();
           }  
           finally 
           {
              streamToPrint.Close();
           }
       }  
       catch(Exception ex) 
       {
           MessageBox.Show(ex.Message);
       }
    }

    // The PrintPage event is raised for each page to be printed.
    private void pd_PrintPage(object sender, PrintPageEventArgs ev) 
    {
       float linesPerPage = 0;
       float yPos = 0;
       int count = 0;
       float leftMargin = ev.MarginBounds.Left;
       float topMargin = ev.MarginBounds.Top;
       string line = null;

       // Calculate the number of lines per page.
       linesPerPage = ev.MarginBounds.Height / 
          printFont.GetHeight(ev.Graphics);

       // Print each line of the file.
       while(count < linesPerPage && 
          ((line=streamToPrint.ReadLine()) != null)) 
       {
          yPos = topMargin + (count * 
             printFont.GetHeight(ev.Graphics));
          ev.Graphics.DrawString(line, printFont, Brushes.Black, 
             leftMargin, yPos, new StringFormat());
          count++;
       }

       // If more lines exist, print another page.
       if(line != null)
          ev.HasMorePages = true;
       else
          ev.HasMorePages = false;
    }


    // The Windows Forms Designer requires the following procedure.
    private void InitializeComponent() 
    {
       this.components = new System.ComponentModel.Container();
       this.printButton = new System.Windows.Forms.Button();

       this.ClientSize = new System.Drawing.Size(504, 381);
       this.Text = "Print Example";

       printButton.ImageAlign = 
          System.Drawing.ContentAlignment.MiddleLeft;
       printButton.Location = new System.Drawing.Point(32, 110);
       printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
       printButton.TabIndex = 0;
       printButton.Text = "Print the file.";
       printButton.Size = new System.Drawing.Size(136, 40);
       printButton.Click += new System.EventHandler(printButton_Click);

       this.Controls.Add(printButton);
    }

    // This is the main entry point for the application.
    public static void Main(string[] args) 
    {
       Application.Run(new PrintingExample());
    }
 }



import System.*;
import System.IO.*;
import System.Drawing.*;
import System.Drawing.Printing.*;
import System.Windows.Forms.*;


public class PrintingExample extends System.Windows.Forms.Form
{
    private System.ComponentModel.Container components;
    private System.Windows.Forms.Button printButton;
    private Font printFont;
    private StreamReader streamToPrint;

    public PrintingExample()
    {
        // The Windows Forms Designer requires the following call.
        InitializeComponent();
    } //PrintingExample

    // The Click event is raised when the user clicks the Print button.
    private void printButton_Click(Object sender, EventArgs e)
    {
        try {
            streamToPrint = new StreamReader("C:\\My Documents\\MyFile.txt");
            try {
                printFont = new Font("Arial", 10);
                PrintDocument pd = new PrintDocument();
                pd.add_PrintPage(new PrintPageEventHandler(this.pd_PrintPage));
                pd.Print();
            }
            finally {
                streamToPrint.Close();
            }
        }
        catch (System.Exception ex) {
            MessageBox.Show(ex.get_Message());
        }
    } //printButton_Click

    // The PrintPage event is raised for each page to be printed.
    private void pd_PrintPage(Object sender, PrintPageEventArgs ev)
    {
        float linesPerPage = 0;
        float yPos = 0;
        int count = 0;
        float leftMargin = ev.get_MarginBounds().get_Left();
        float topMargin = ev.get_MarginBounds().get_Top();
        String line = null;

        // Calculate the number of lines per page.
        linesPerPage = ev.get_MarginBounds().get_Height() / 
            printFont.GetHeight(ev.get_Graphics());

        // Print each line of the file.
        while ((count < linesPerPage && 
            (line = streamToPrint.ReadLine()) != null)) {
            yPos = topMargin + count * printFont.GetHeight(ev.get_Graphics());
            ev.get_Graphics().DrawString(line, printFont, Brushes.get_Black(),
                leftMargin, yPos, new StringFormat());
            count++;
        }

        // If more lines exist, print another page.
        if (line != null) {
            ev.set_HasMorePages(true);
        }
        else {
            ev.set_HasMorePages(false);
        }
    } //pd_PrintPage

    // The Windows Forms Designer requires the following procedure.
    private void InitializeComponent()
    {
        this.components = new System.ComponentModel.Container();
        this.printButton = new System.Windows.Forms.Button();
        this.set_ClientSize(new System.Drawing.Size(504, 381));
        this.set_Text("Print Example");
        printButton.set_ImageAlign(System.Drawing.ContentAlignment.MiddleLeft);
        printButton.set_Location(new System.Drawing.Point(32, 110));
        printButton.set_FlatStyle(System.Windows.Forms.FlatStyle.Flat);
        printButton.set_TabIndex(0);
        printButton.set_Text("Print the file.");
        printButton.set_Size(new System.Drawing.Size(136, 40));
        printButton.add_Click(new System.EventHandler(printButton_Click));
        this.get_Controls().Add(printButton);
    } //InitializeComponent

    // This is the main entry point for the application.
    public static void main(String[] args)
    {
        Application.Run(new PrintingExample());
    } //main
} //PrintingExample


System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Drawing.Printing.PrintDocument

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2016 Microsoft