Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Es habitual que las aplicaciones basadas en Windows impriman texto. La Graphics clase proporciona métodos para dibujar objetos (gráficos o texto) en un dispositivo, como una pantalla o impresora. En la sección siguiente se describe detalladamente el proceso para imprimir el archivo de texto. Este método no admite la impresión de archivos de texto no sin formato, como un documento de Office Word o un archivo PDF .
Nota:
Los métodos de DrawText de TextRenderer no están admitidos para impresión. Siempre debe usar los métodos de DrawString, como se muestra en el siguiente ejemplo de código Graphics, para dibujar texto con fines de impresión.
Para imprimir texto
En Visual Studio, haga doble clic en el formulario desde el que desea imprimir, en el panel Explorador de soluciones. Esta acción abre el Diseñador visual.
En el Cuadro de herramientas, haga doble clic en el PrintDocument componente para agregarlo al formulario. Esta acción crea un
PrintDocumentcomponente con el nombreprintDocument1.Agregue un
Buttonelemento al formulario o use un botón que ya esté en el formulario.En el Diseñador visual del formulario, seleccione el botón . En el panel Propiedades , seleccione el botón Filtro de eventos y haga doble clic en el
Clickevento para generar un controlador de eventos.El
Clickcódigo de evento debe estar visible. Fuera del ámbito del controlador de eventos, agregue una variable de cadena privada a la clase denominadastringToPrint.private string stringToPrint="";'Private PrintDocument1 As New PrintDocument() Private stringToPrint As StringDe nuevo en el código del
Clickcontrolador de eventos, establezca la DocumentName propiedad en el nombre del documento. Esta información se envía a la impresora. A continuación, lea el contenido del texto del documento y guárdelo en lastringToPrintcadena. Por último, llame al método Print para activar el evento PrintPage. ElPrintmétodo está resaltado en el código siguiente:private void button1_Click(object sender, EventArgs e) { string docName = "testPage.txt"; string docPath = @"C:\"; string fullPath = System.IO.Path.Combine(docPath, docName); printDocument1.DocumentName = docName; stringToPrint = System.IO.File.ReadAllText(fullPath); printDocument1.Print(); }Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim docName As String = "testPage.txt" Dim docPath As String = "C:\" Dim fullPath As String = System.IO.Path.Combine(docPath, docName) PrintDocument1.DocumentName = docName stringToPrint = System.IO.File.ReadAllText(fullPath) PrintDocument1.Print() End SubVuelva al Diseñador visual del formulario y seleccione el
PrintDocumentcomponente. En el panel Propiedades , seleccione el filtro Evento y, a continuación, haga doble clic en elPrintPageevento para generar un controlador de eventos.En el PrintPage controlador de eventos, use la propiedad de la clase Graphics y el contenido del documento para calcular la longitud de línea PrintPageEventArgs y las líneas por página. Después de dibujar cada página, compruebe si es la última página y, en consecuencia, establezca la HasMorePages propiedad de
PrintPageEventArgs. ElPrintPageevento se genera hasta queHasMorePagesestéfalse.En el ejemplo de código siguiente, el controlador de eventos se usa para imprimir el contenido del archivo "testPage.txt" en la misma fuente que se usa en el formulario.
private void PrintDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { int charactersOnPage = 0; int linesPerPage = 0; // Sets the value of charactersOnPage to the number of characters // of stringToPrint that will fit within the bounds of the page. e.Graphics.MeasureString(stringToPrint, this.Font, e.MarginBounds.Size, StringFormat.GenericTypographic, out charactersOnPage, out linesPerPage); // Draws the string within the bounds of the page e.Graphics.DrawString(stringToPrint, this.Font, Brushes.Black, e.MarginBounds, StringFormat.GenericTypographic); // Remove the portion of the string that has been printed. stringToPrint = stringToPrint.Substring(charactersOnPage); // Check to see if more pages are to be printed. e.HasMorePages = (stringToPrint.Length > 0); }Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim charactersOnPage As Integer = 0 Dim linesPerPage As Integer = 0 ' Sets the value of charactersOnPage to the number of characters ' of stringToPrint that will fit within the bounds of the page. e.Graphics.MeasureString(stringToPrint, Me.Font, e.MarginBounds.Size, StringFormat.GenericTypographic, charactersOnPage, linesPerPage) ' Draws the string within the bounds of the page e.Graphics.DrawString(stringToPrint, Me.Font, Brushes.Black, e.MarginBounds, StringFormat.GenericTypographic) ' Remove the portion of the string that has been printed. stringToPrint = stringToPrint.Substring(charactersOnPage) ' Check to see if more pages are to be printed. e.HasMorePages = stringToPrint.Length > 0 End Sub
Consulte también
.NET Desktop feedback