Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

aishihara

Problemas com PrintDocument Frente e verso

Recommended Posts

Boa tarde,

 

Tenho a seguinte dúvida: Eu tenho um winform que me retorna registros e preciso mandar eles para impressão. Cada registro vai gerar uma carta que tem frente e verso.

 

Dentro do void print fiz a seguinte chamada:

foreach (datadgridviewrow dr in ds)

{

  ImpressaoVerso() //função para imprimir o verso

  contPaginas++

  if (contPaginas > totalPaginas)

     e.HasMorePages = true;

  else

     e.HasMorePages = true;

  ImpressaoFrente()//função para imprimir a frente

  contPaginas++

  if (contPaginas > totalPaginas)

     e.HasMorePages = true;

  else
     e.HasMorePages = true;

}

Só que as duas partes são impressas no mesmo lado da página. Sem contar que ele registra apenas o ultimo registro indicado. Alguem tem alguma ideia do que estou fazendo de errado? Ou que poderia estar fazendo?

 

 

 

Agradeço a atenção,

 

André Ishihara

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo, eu tenho um código de impressão em printdocument em VB, ele não imprimi frente em verso, mas muda de página, seria interessante explicar melhor o que está imprimindo e a diferença do que está na frente e no verso.

 

E reparei que as suas condições fazem a mesma coisa, se o If for True então e.HasMorePages recebe True, e se o If cair no Else e.HasMorePages recebe True também.

 

Poste ai mais detalhes que acho que posso ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo, eu tenho um código de impressão em printdocument em VB, ele não imprimi frente em verso, mas muda de página, seria interessante explicar melhor o que está imprimindo e a diferença do que está na frente e no verso.

 

E reparei que as suas condições fazem a mesma coisa, se o If for True então e.HasMorePages recebe True, e se o If cair no Else e.HasMorePages recebe True também.

 

Poste ai mais detalhes que acho que posso ajudar.

 

Seria uma carta que possui frente e verso. O que tem nas funções ImprimirFrente() e ImprimirVerso() são apenas os comandos de impressão.

Gostaria de algo parecido com este comando:

           foreach (DataGridViewRow drDados in datagridview1.Rows)
           {
               drRegistro = drDados;
               if (drDados.Cells["Selecao"].Value == null)
                   drDados.Cells["Selecao"].Value = false;
               if (drDados.Cells["Selecao"].Value.ToString().ToLower() == "true")
               {
                   pd.PrintPage += new PrintPageEventHandler(ImprimirVerso);
                   pd.PrintPage += new PrintPageEventHandler(ImprimirFrente);
                   pd.Print();
                   cntContadorPaginas++;
               }
           }

Este código imprime o lado da frente dos registros selecionados. Mas precisaria que imprimisse o verso também e gerar apenas um printdocument porque da forma atual ele gera um printdocument por registro selecionado no DataGridView. Tem alguma ideia? Se tiver mais dúvidas entrar em contato, por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde pessoas,

 

Depois de muito pesquisar consgui um código que faz quase o que eu preciso:

           Class.MultiPrintDocument mutlPrint;
           foreach (DataGridViewRow drDados in dgvRegistros.Rows)
           {
               drRegistro = drDados;
               if (drDados.Cells["Selecao"].Value == null)
                   drDados.Cells["Selecao"].Value = false;
               if (drDados.Cells["Selecao"].Value.ToString().ToLower() == "true")
               {
                   pdVerso.PrintPage += new PrintPageEventHandler(ImprimirVerso);
                   pdRegistro[cntContadorPaginas] = pdVerso;
                   cntContadorPaginas++;
                   pdFrente.PrintPage += new PrintPageEventHandler(ImprimirFrente);
                   pdRegistro[cntContadorPaginas] = pdFrente;
                   cntContadorPaginas++;
               }
           }
           mutlPrint = new Class.MultiPrintDocument(pdRegistro);
           mutlPrint.Print();

 

A Classe MultiPrintDocument foi encontrada neste endereço: http://www.csharp-examples.net/combine-mul...printdocuments/.

 

O único problema desse código é que ele não faz as chamadas das funções ImprimirFrente e ImprimirVerso, que é aonde a parte da impressão é feita(O que é impresso, etc). Tem um outro handler alem do PrintPageEventHandler que consegue chamar as funções? Porque este é o meu único problema agora.

 

Agradeço a atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.