Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
É comum que aplicativos baseados no Windows imprimam texto. A classe Graphics fornece métodos para desenhar objetos (elementos gráficos ou texto) para um dispositivo, como uma tela ou impressora. A seção a seguir descreve detalhadamente o processo para imprimir o arquivo de texto. Esse método não dá suporte à impressão de arquivos de texto não simples, como um documento do Office Word ou um arquivo PDF
Observação
Os métodos de DrawText não têm suporte para impressão. Você sempre deve usar os métodos DrawString de Graphics, conforme mostrado no exemplo de código a seguir, para desenhar texto para fins de impressão.
Para imprimir texto
No Visual Studio, clique duas vezes no formulário do qual você deseja imprimir, no painel do Gerenciador de Soluções
. Essa ação abre o Designer Visual. Na caixa de ferramentas , clique duas vezes no componente PrintDocument para adicioná-lo ao formulário. Essa ação cria um
PrintDocument
componente com o nomeprintDocument1
.Adicione um
Button
ao formulário ou use um botão que já esteja no formulário.No Designer Visual do formulário, selecione o botão. No painel Propriedades, selecione o botão de filtro de Evento e, em seguida, clique duas vezes no evento
Click
para gerar um manipulador de eventos.O código de evento
Click
deve estar visível. Fora do escopo do manipulador de eventos, adicione uma variável de cadeia de caracteres privada à classe chamadastringToPrint
.private string stringToPrint="";
'Private PrintDocument1 As New PrintDocument() Private stringToPrint As String
De volta ao código do manipulador de eventos
Click
, defina a propriedade DocumentName como o nome do documento. Essas informações são enviadas para a impressora. Em seguida, leia o conteúdo do texto do documento e armazene-o na cadeia de caracteresstringToPrint
. Por fim, chame o método Print para gerar o evento PrintPage. OPrint
método é realçado no seguinte código: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 Sub
Volte para o Designer Visual do formulário e selecione o componente
PrintDocument
. No painel Propriedades, selecione o filtro Evento e clique duas vezes no eventoPrintPage
para gerar um manipulador de eventos.No manipulador de eventos PrintPage, use a propriedade Graphics da classe PrintPageEventArgs e o conteúdo do documento para calcular o comprimento da linha e as linhas por página. Depois que cada página for desenhada, verifique se ela é a última página e defina a propriedade HasMorePages do
PrintPageEventArgs
adequadamente. O eventoPrintPage
é gerado até queHasMorePages
sejafalse
.No exemplo de código a seguir, o manipulador de eventos é usado para imprimir o conteúdo do arquivo "testPage.txt" na mesma fonte que é usada no formulário.
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 também
.NET Desktop feedback