Imprimir usando PrintDocument e PrintDialog

Esta pretende ser uma forma muito simples e breve em visual basic. net . Fácil de entender rapidamente que ele funciona e de curta duração (com muito pouco código) para que nada nos impede, quando colocar o nosso toque pessoal. Os programadores são muito criativos e eu passei muitas vezes eu me encontrei com muito complexa e cheia de exemplos de código, que eu tinha que dissecar e analisar as partes para entender o seu funcionamento. Então, eu tento colocar todas as mensagens em minha exemplos concretos, simples de operar com apenas copiar, colar e fazer um controle mimina configuração.

Precisamos de:

A WinForm (Form1), um controle PrintDocument (PrintDocument1), um PrintDialog (PrintDialog1), um TextBox (TextBox1) e um botão (Button1). O formulário deve ser semelhante a esta imagem:

Copie o código a seguir no evento Click do Button1


 Então, se PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK
 PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
 PrintDocument1.Print ()
 End If

que ele faz é abrir a caixa de diálogo para selecionar a impressora e, em seguida, passa toda a configuração passa o objeto PrintDocument selecionado e depois diz-lhe imprimir. O que desencadeia o PrintDocument PrintPage evento.

Agora, o PrintDocument1 objeto duplo clique e cole o seguinte código


 e.Graphics.DrawString (Font, TextBox1.Text Novo ("Verdana", 18, FontStyle.Bold) Brushes.Black, 10, 10)

 For i As Integer = 1 To 10
 e.Graphics.DrawString ("Exemplo de linha:" & i, New Font ("Tahoma", 10, FontStyle.Bold) Brushes.Black, 10, 20 + (i * 30))
 Próximo

Quando você executa isto imprime o conteúdo da caixa como o título da página e dez linhas com amostra diferente e furnte e tamanho. O resultado será semelhante à seguinte imagem:

mais informações sobre os controles ...

PrintDialog componente (Windows Forms)

O componente PrintDialog do Windows Forms é uma caixa de diálogo pré-configurado é usado para selecionar uma impressora, escolher as páginas para imprimir e determinar as configurações de outros relacionados com a impressão de aplicativos baseados no Windows. Use-o como uma solução simples para selecionar as configurações da impressora ou relacionados com a impressora, ao invés de configurar uma caixa de diálogo em si. Você pode permitir que os usuários imprimam várias partes de seus documentos: imprimir tudo, imprimir o intervalo especificado de páginas ou imprimir uma seleção. Ao confiar no Windows padrão diálogos, criar aplicações cuja funcionalidade básica é imediatamente familiar aos usuários.

O componente de PrintDocument (Windows Forms)

O componente PrintDocument do Windows Forms é usado para definir as propriedades que descrevem o que imprimir e, em seguida, imprimir o documento em aplicativos baseados no Windows.

84 Responses to "Imprimir usando PrintDocument e PrintDialog"

  1. ZOLRAK.MX diz:

    Bem como eu andava o post e ninguém respondeu sobre como faz para imprimir mais páginas, eu me dei a tarefa de investigar outros sites e encontrei um código, mas este meio complexo para enterlo facilmente por isso modique o exemplo que estão dirigindo aqui então não há meus dois centavos e espero e eu entendo okas ;)

    "Esta variável tem de ser publicada
    Dim linha As Integer = 1

    PrintDocument1_PrintPage Private Sub (ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

    "Nós definimos o tipo de fonte e mais
    Fonte Dim nova fonte ("Arial", 10)
    "Nós definimos que posição vai começar a impressão
    Posição Dim As Integer = 20
    "Contagem de linhas é impresso
    Lineaimpresa Dim As Integer = 0
    'Variável para ver quando você dar um salto de página
    Dim As Boolean = False salto_pagina
    'Variável para designar quantas linhas a imprimir por folha
    NroLineasPagina Dim As Integer = 70

    Para i = linha a 150
    e.Graphics.DrawString ("Exemplo de linha:" & linha, Fonte, Brushes.Black, 10, posição)
    posição + = 15
    linha + = 1
    lineaimpresa + = 1
    Então, se lineaimpresa = NroLineasPagina
    salto_pagina = True
    Para Sair
    End If
    Próximo

    Se salto_pagina = True Then
    e.HasMorePages = True
    Outro
    e.HasMorePages = False
    End If
    End Sub

    Bem, eu espero e servi-los e sua necessidade de adaptar byes okas

  2. diego diz:

    como eu posso imprimir

  3. renestimpy diz:

    Imports System.IO

    FrmDesCaratula Public Class

    StringToPrint As String Privada

    Private Sub frmDesCaratula_Load (sender As e Object, As System.EventArgs) Handles MyBase.Load
    Me.MdiParent = mdiPrincipal
    End Sub

    Private Sub Button1_Click (sender As e Object, As System.EventArgs) Handles Button1.Click
    Então, se ptdConfiguracion.ShowDialog = Windows.Forms.DialogResult.OK
    ptdDocumento.PrinterSettings = ptdConfiguracion.PrinterSettings
    ptdDocumento.Print ()
    End If
    End Sub

    Private Sub PrintDocument1_PrintPage (sender As e objeto, como System.Drawing.Printing.PrintPageEventArgs) Handles ptdDocumento.PrintPage

    e.Graphics.DrawString (Font, TextBox1.Text Novo ("Verdana", 18, FontStyle.Bold) Brushes.Black, 10, 10)
    For i As Integer = 1 To 10
    e.Graphics.DrawString ("Exemplo de linha:" & i, New Font ("Tahoma", 10, FontStyle.Bold) Brushes.Black, 10, 20 + (i * 30))
    Próximo

    '----- ALL IMPRIMIR UM DOCUMENTO

    'Dim As Integer = 0 charactersOnPage
    'Dim As Integer = 0 linesPerPage

    'Define o valor do número de charactersOnPage aos caracteres
    "Isso vai se encaixar de stringToPrint Dentro dos limites da página.
    "E.Graphics.MeasureString (stringToPrint, Me.Font, e.MarginBounds.Size, _
    "StringFormat.GenericTypographic, charactersOnPage, linesPerPage)

    "Desenha a seqüência dentro dos limites da página
    "E.Graphics.DrawString (stringToPrint, Me.Font, Brushes.Black, _
    "E.MarginBounds, StringFormat.GenericTypographic)

    "Remover a parte da corda que foi impressa.
    'StringToPrint stringToPrint.Substring = (charactersOnPage)

    'Verifique para ver se mais páginas devem ser impressas.
    "E.HasMorePages = stringToPrint.Length> 0

    End Sub

    Private Sub Button2_Click (sender As e Object, As System.EventArgs) Handles Button2.Click
    ReadFile ()
    ptdDocumento.Print ()
    End Sub

    Private Sub ReadFile ()
    DocName Dim String = "index.html"
    DocPath Dim String = "G: \"
    ptdDocumento.DocumentName = docName
    Fluxo Dim FileStream (DocPath + docName, FileMode.Open)
    Tentar
    Leitor Dim StreamReader (stream)
    Tentar
    reader.ReadToEnd stringToPrint = ()
    Finalmente
    reader.Dispose ()
    End Try
    Finalmente
    stream.Dispose ()
    End Try
    End Sub

    Private Sub Button3_Click (sender As e Object, As System.EventArgs) Handles Button3.Click
    ppdVista.Document = ptdDocumento
    ppdVista.ShowDialog ()
    End Sub

    End Class

    Isso funcionou para mim, você precisa de um texbox: TextBox1
    PrintDocument: ptdDocumento
    PrintPreviewControl: ppdVista
    PrintDialog: ptdConfiguracion

  4. Kevin Ramirez diz:

    Interessante artigo, mas se perguntam como devemos agir ambientes mais profissionais, como a impressão de bilhetes, recibos, faturas ou cheques de controle se a impressora está online e tem papel ou impreison mido da impressão foi interrompida-los para algum erro.

    Salve hacerca do que você menciona como eu já tentou várias vezes sem sucesso deste e não encontrei nada para resolver este problema.

    Saudações.
    Atte. Kevin Ramirez

  5. Franco C. Sanchez diz:

    Bom dia, queria saber se você teve algum tutorial para que você possa imprimir o conteúdo de um datagridview porque tudo que eu encontrar na internet é muito código e capaz de executar qualquer coisa eh!.
    Eu apreciaria muito se você tinha informações sobre ele.

    Atenciosamente

  6. Manuel diz:

    Querido, eu tenho a programação para mais de 10 anos na Microsoft, passou por Vb6 e agora estou com VS2010.
    Eu não encontrei nenhuma ferramenta mais flexível PrintDocument relatos, não há nada que ele não podia fazer.

    Se você tiver dúvidas entre em contato comigo.
    relação

  7. Sa Edgar diz:

    Oi desculpe, eu preciso de ajuda urgente O que acontece é que eu quero saber como eu posso imprimir o conteúdo d painel em que tenho uma imagem (maior do que o painel em lidar com k barra de rolagem) e um textBox poucos ... tudo de um PrintDocument. oi desculpe, eu preciso de ajuda urgente O que acontece é que eu quero saber como eu posso imprimir o conteúdo d painel em que tenho uma imagem (maior do que o painel em lidar com k barra de rolagem) e um textBox poucos ... tudo de um PrintDocument. oi desculpe, eu preciso de ajuda urgente O que acontece é que eu quero saber como eu posso imprimir o conteúdo d painel em que tenho uma imagem (maior do que o painel em lidar com k barra de rolagem) e um textBox poucos ... tudo de um PrintDocument.

  8. Torres diz:

    muito obrigado, primeiro exemplo simples que funciona

  9. Alberto diz:

    Obrigado. Clareza e rigor. Grande. Agora eu tenho que fazer os ciclos e filtros necessários para imprimir os registros em um banco de dados, mas que esta muito claramente como exposto de ter encontrado em outro lugar muito mal expostos. Você tem que ser um grande professor.

  10. blá disse:

    Eu servi o seu exemplo, se eu tenho uma pergunta assim como eu posso de alprograma impressão cirle para a posição correta meu email é yack7raro@gmail.com se poersona lagoa conhecida como

  11. Joe diz:

    O post é excelente, eu preciso de alguns detalhes para finalizar a impressão minha gravadora, neste caso, o primeiro ponto é para imprimir o que está na caixa, e segundo para acomodar a posição da impressão, de cumprimentos e muito obrigado ...

    • Joe diz:

      PS O texto a impressão da primeira caixa de texto abaixo do código de barras código de barras precisa ser impresso em letras normais é a parte que não esclarece, obrigado ...

Comentar