impressão c#

Programação C em geral

Moderadores: 51, guest2003

impressão c#

Mensagempor charllie » 11 Dez 2017 09:36

oi, sou novo por aqui e gostaria da ajuda de vocês.

preciso fazer a impressão de um listview, a impressao é de uma tabela e tals

eu peguei esse codigo da internet:

private void button1_Click(object sender, EventArgs e)
{
try
{



string texto = "texto de impressão";
leitor = new StringReader(texto);
PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();
printPreviewDialog1.Document = this.printDocument1;
printPreviewDialog1.FormBorderStyle = FormBorderStyle.Fixed3D;
printPreviewDialog1.ShowDialog();
}
catch (Exception exp)
{
MessageBox.Show(" Erro : " + exp.Message.ToString());
}
}

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//variaveis usadas para definir as configurações da impressão
float linhasPorPagina = 0;
float yPosicao = 0;
int contador = 0;
float margemEsquerda = e.MarginBounds.Left;
float margemSuperior = e.MarginBounds.Top;
string linha = null;
Font fonteImpressao = this.richTextBox1.Font;
SolidBrush mCaneta = new SolidBrush(Color.Black);

// Define o numero de linhas por pagina, usando MarginBounds.
linhasPorPagina = e.MarginBounds.Height / fonteImpressao.GetHeight(e.Graphics);

// Itera sobre a string usando StringReader, imprimindo cada linha
while (contador < linhasPorPagina && ((linha = leitor.ReadLine()) != null))
{
// calcula a posicao da proxima linha baseada
// na altura da fonte de acordo com o dispositivo de impressão
yPosicao = margemSuperior + (contador * fonteImpressao.GetHeight(e.Graphics));

// desenha a proxima linha no controle RichTextBox
e.Graphics.DrawString(linha, fonteImpressao, mCaneta, margemEsquerda, yPosicao, new StringFormat());
contador++;
}
// Verifica se existe mais linhas para imprimir
if (linha != null)
e.HasMorePages = true;
else
e.HasMorePages = false;

//libera recursos
mCaneta.Dispose();
}


o código imprime e tals, mas eu gostaria de muda-lo para ele criar uma tabela na impressão.
do jeito que ele esta ai ele imprimi um texto

se alguem puder ajudar :)
charllie
Bit
 
Mensagens: 7
Registrado em: 19 Jul 2017 19:10

Re: impressão c#

Mensagempor KrafT » 12 Dez 2017 10:19

Esse código aí me lembra quando gerava relatórios no Clipper Summer 87... Se fazia tudo na unha, o "must" era preencher a sobra do formulário contínuo com "*" em diagonal. "Os cara phodão", criavam a logo da empresa contando as batidas das agulhas da impressora...

Eu não sou um expert em C#, só uso para fazer aplicativos de uso pessoal, nos quais a interface é a última preocupação e relatórios eu puxo do banco de dados. Mas se tivesse que imprimir coisas direto do aplicativo, usaria algo como o Crystal Reports que se usava no Delphi. Deve existir algo semelhante para Visual Studio/C#.
"..."Come to the edge," he said. And so they came. And he pushed them. And they flew."― Guillaume Apollinaire
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Re: impressão c#

Mensagempor Red Neck Guy » 12 Dez 2017 13:51

Então, falei pro Charllie que tem que usar um gerador de reports pra fazer algo bonito.
Ou
Caso queria fazer na unha, mas bonito, tem que usar o GDI+ pra criar uma área de desenho onde possa utilizar as primitivas de desenho(line,dot,string,bitmap). Com essas ferramentas, desenha o relatório em "memória" e depois envia para a impressora. Pensando bem, acho que pra imprimi uma simples lista de objetos eu faria assim, pois tu tem controle total.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: impressão c#

Mensagempor Red Neck Guy » 12 Dez 2017 13:55

ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24


Voltar para Visual C++/C/C++/C#

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x