C# - Imprimindo um arquivo texto
Hoje vamos recordar como imprimir um arquivo texto usando a linguagem C#. |
Este é um artigo para quem iniciou com a linguagem C# agora e precisa imprimir um arquivo em uma impressora selecionada.
No artigo veremos como selecionar uma impressora e um arquivo texto e então exibir uma prévia da impressão do arquivo.
Vamos usar os recursos da classe PrintDocument que define um objeto reutilizável que envia a saída para uma impressora ao imprimir usando um aplicativo do Windows Forms.
Para saber mais veja este artigo: C# - Imprimindo com PrintDocument - Macoratti
Criando o projeto Windows Forms no VS 2017
Abra o VS 2017 Community e crie um projeto Windows Forms com o nome : CShpImpressao.
A seguir, a partir da ToolBox inclua os seguintes controles no formulário Form1.cs :
Disponha os controles conforme mostrado no leiaute abaixo:
Definindo o código do formulário
No início do formulário vamos declarar uma variável privada do tipo string para receber o conteúdo do arquivo selecionado para impressão:
private string conteudoArquivoSelecionado;
No evento Load do formulário vamos carregar o controle Combobox para exibir as impressoras instaladas e definir o arquivo para impressão como sendo o arquivo Form1.cs do projeto.
private void Form1_Load(object sender, EventArgs e)
{
// Localiza e carrega as impressoras instaladas
foreach (string printer in PrinterSettings.InstalledPrinters)
{
cboImpressoras.Items.Add(printer);
}
//define a impressora padrão
try
{
PrinterSettings settings = new PrinterSettings();
cboImpressoras.Text = settings.PrinterName;
}
catch
{
MessageBox.Show("Ocorreu um erro ao selecionar a impressora...");
}
// Seleciona o arquivo para impressão
// Vamos selecionar o arquivo Form1.cs
string file_path = Application.StartupPath;
if (file_path.EndsWith(@"\bin\Debug"))
file_path = file_path.Substring(0, file_path.Length - 10);
if (file_path.EndsWith(@"\bin\Release"))
file_path = file_path.Substring(0, file_path.Length - 12);
if (file_path.EndsWith(@"\"))
file_path = file_path.Substring(0, file_path.Length - 1);
file_path += @"\Form1.cs";
txtArquivo.Text = file_path;
}
|
No evento Click do botão para selecionar o arquivo inclua o código abaixo:
private void btnSelecionaArquivo_Click(object sender, EventArgs e)
{
ofdlg1.FileName = txtArquivo.Text;
if (ofdlg1.ShowDialog() == DialogResult.OK)
{
txtArquivo.Text = ofdlg1.FileName;
}
} |
Após selecionar um arquivo, ao clicar no botão Visualizar Impressão vamos obter o conteúdo do arquivo selecionado e chamar o diálogo para visualizar a impressão.
Assim, no evento Click do botão btnVisualizarImpressao inclua o código abaixo:
private void btnVisualizarImpressao_Click(object sender, EventArgs e)
{
// le o conteúdo do arquivo
try
{
conteudoArquivoSelecionado = File.ReadAllText(txtArquivo.Text).Trim();
}
catch (Exception ex)
{
MessageBox.Show("Erro na leitura do arquivo : " + txtArquivo.Text +
".\n" + ex.Message);
return;
}
// Exibe o díálogo de visualização da impressão
ppvdlg1.ShowDialog();
}
|
Para poder exibir a impressão temos que definir o código no evento PrintPage do controle PrintDocument conforme a seguir:
private void pdc1_PrintPage(object sender, PrintPageEventArgs e)
{
// Define uma fonte para imprimir o arquivo
using (Font font = new Font("Courier New", 10))
{
// Alinhando o texto no arquivo
using (StringFormat string_format = new StringFormat())
{
//Verifica quanto falta de texto para ajustar
SizeF leiaute_Area = new SizeF(e.MarginBounds.Width, e.MarginBounds.Height);
int chars_Ajustado, linhas_Ajustadas;
e.Graphics.MeasureString(conteudoArquivoSelecionado, font, leiaute_Area, string_format,out chars_Ajustado, out linhas_Ajustadas);
// Imprime o texto ajustado
e.Graphics.DrawString(conteudoArquivoSelecionado.Substring(0, chars_Ajustado),
font, Brushes.Black, e.MarginBounds,string_format);
// Remove o texto impresso da string
conteudoArquivoSelecionado = conteudoArquivoSelecionado.Substring(chars_Ajustado).Trim();
}
}
// verifica completou a impressao
e.HasMorePages = conteudoArquivoSelecionado.Length > 0;
}
|
Executando o projeto teremos o seguinte resultado:
1- O formulário inicialmente exibindo as impressoras e o arquivo Form1.cs para impressão:
Selecionando uma impressora e clicando no botão Visualizar Impressão temos a visualização da impressão conforme abaixo:
Pegue o projeto completo aqui: CShpImpressao.zip
"Porque o coração deste povo está
endurecido,E ouviram de mau grado com seus ouvidos,E fecharam seus olhos;Para
que não vejam com os olhos,E ouçam com os ouvidos,e compreendam com o coração,e
se convertam,e eu os cure."
Mateus 13:15
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
C# - Paginando e Imprimindo o DataGridView (via DataSet) - Macoratti
C# - Editor de Texto com RichTextBox e PrintDocument - II - Macoratti