Leer en inglés

Compartir a través de


PrintDocument Clase

Definición

Define un objeto reutilizable que envía el resultado a una impresora al imprimir desde una aplicación de Windows Forms.

public class PrintDocument : System.ComponentModel.Component
Herencia

Ejemplos

En el ejemplo de código siguiente se imprime el archivo denominado C:\My Documents\MyFile.txt en la impresora predeterminada. Para ejecutar el ejemplo, cree un nuevo proyecto de Windows Forms y pegue el código de ejemplo en el formulario, reemplazando el contenido del archivo. Para C#, deberá eliminar form1. Designer.cs archivo. Además, cambie la ruta de acceso al archivo que desea imprimir.

Nota

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

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

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

    public Form1()
    {
        // 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);
    }
}

Comentarios

Normalmente, se crea una instancia de la PrintDocument clase , se establecen propiedades como y DocumentNamePrinterSettings, y se llama al Print método para iniciar el proceso de impresión. Controle el PrintPage evento donde especifique la salida que se va a imprimir mediante la GraphicsGraphics propiedad de PrintPageEventArgs.

Para obtener más información sobre la impresión desde una aplicación de Windows Forms, consulte el Windows Forms compatibilidad con impresión. Si desea imprimir desde una aplicación de Windows Presentation Foundation, consulte el System.Printing espacio de nombres .

Nota

En .NET 6 y versiones posteriores, el paquete System.Drawing.Common, que incluye este tipo, solo se admite en sistemas operativos Windows. El uso de este tipo en aplicaciones multiplataforma provoca advertencias en tiempo de compilación y excepciones en tiempo de ejecución. Para obtener más información, vea System.Drawing.Common solo compatible con Windows.

Constructores

PrintDocument()

Inicializa una nueva instancia de la clase PrintDocument.

Propiedades

CanRaiseEvents

Obtiene un valor que indica si el componente puede generar un evento.

(Heredado de Component)
Container

Obtiene la interfaz IContainer que contiene la clase Component.

(Heredado de Component)
DefaultPageSettings

Obtiene o establece la configuración de página que se utiliza como predeterminada para todas las páginas que se van a imprimir.

DesignMode

Obtiene un valor que indica si Component está actualmente en modo de diseño.

(Heredado de Component)
DocumentName

Obtiene o establece el nombre del documento que va a aparecer (por ejemplo, en un cuadro de diálogo de estado de impresión o cola de impresión) mientras se imprime el documento.

Events

Obtiene la lista de controladores de eventos asociados a Component.

(Heredado de Component)
OriginAtMargins

Obtiene o establece un valor que indica si un objeto gráfico asociado a una página está situado justo dentro de los márgenes especificados por el usuario o en la esquina superior izquierda del área de impresión de la página.

PrintController

Obtiene o establece el dispositivo de impresión que guía el proceso de impresión.

PrinterSettings

Obtiene o establece la impresora que imprime el documento.

Site

Obtiene o establece ISite de Component.

(Heredado de Component)

Métodos

CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
Dispose()

Libera todos los recursos que usa Component.

(Heredado de Component)
Dispose(Boolean)

Libera los recursos no administrados que usa Component y, de forma opcional, libera los recursos administrados.

(Heredado de Component)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetLifetimeService()
Obsoletos.

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
GetService(Type)

Devuelve un objeto que representa el servicio suministrado por Component o por Container.

(Heredado de Component)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializeLifetimeService()
Obsoletos.

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.

(Heredado de MarshalByRefObject)
OnBeginPrint(PrintEventArgs)

Genera el evento BeginPrint. Se llama después de llamar al método Print() y antes de que se imprima la primera página del documento.

OnEndPrint(PrintEventArgs)

Genera el evento EndPrint. Se llama cuando se ha imprimido la última página del documento.

OnPrintPage(PrintPageEventArgs)

Genera el evento PrintPage. Se llama antes de que se imprima una página.

OnQueryPageSettings(QueryPageSettingsEventArgs)

Genera el evento QueryPageSettings. Se llama justo antes de cada evento PrintPage.

Print()

Inicia el proceso de impresión del documento.

ToString()

Proporciona información sobre el documento de impresión, en forma de cadena.

Eventos

BeginPrint

Se produce cuando se llama al método Print() antes de que se imprima la primera página del documento.

Disposed

Tiene lugar cuando una llamada elimina el componente mediante una llamada al método Dispose().

(Heredado de Component)
EndPrint

Se produce cuando se ha imprimido la última página del documento.

PrintPage

Se produce cuando se necesita el resultado que se va a imprimir para la página actual.

QueryPageSettings

Se produce justo antes de cada evento PrintPage.

Se aplica a

Producto Versiones
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

Consulte también