Usuário com melhor resposta
Imprimir PDF direto p/ impressora

Pergunta
-
Respostas
-
Julian,
Esse processo funciona bem...
private void Imprimir(string p_pathFilePdf) { try { FileInfo file = new FileInfo(p_pathFilePdf); if (file.Exists) { Process process = new Process(); Process objP = new Process(); objP.StartInfo.FileName = p_pathFilePdf; objP.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; //Hide the window. objP.StartInfo.Verb = "print"; objP.StartInfo.CreateNoWindow = true; objP.Start(); objP.CloseMainWindow(); } else { LogProcesso("OK", "MandaImprimirPS()", "Arquivo não existe."); } } catch (Exception ex) { LogProcesso("Erro", ex.Source, ex.Message); } }
[]´s- Sugerido como Resposta Tiago de Campos Alves quarta-feira, 30 de dezembro de 2009 15:30
- Marcado como Resposta Heloisa PiresModerator terça-feira, 3 de julho de 2012 13:56
Todas as Respostas
-
Julian
O famework não contém classes para manipulação de arquivos pbf. A solução é conseguir componentes que fazem essa manipulação, para que seja possível a leitura e o envio para a impressora.
Não conheço nenhum componente free, mas na internet existem muita coisa freeware por aí. Lembre-se que você poderá usar componentes .NET e ActiveX
Boa sorte!!!
-
-
Criei o seguinte método:
private void ImprimirPdf(string strPathExeAdobeReader, string strDiretorioOndeEstaoPdfs, string strNomeArquivoPdf, string strNomeImpressora) { if (string.IsNullOrEmpty(strPathExeAdobeReader)) throw new Exception("Nenhum caminho (path) para o arquivo AcroRd32.exe / Acrobat.exe encontrado."); if (string.IsNullOrEmpty(strNomeImpressora)) throw new Exception("Nenhuma impressora encontrada."); if (string.IsNullOrEmpty(strDiretorioOndeEstaoPdfs)) throw new Exception("O caminho para o diretórios dos arquivos PDF´s não foi encontrado."); else { string strPathArqPdf = Path.Combine(strDiretorioOndeEstaoPdfs, strNomeArquivoPdf); if (!File.Exists(strPathArqPdf)) throw new Exception(String.Format("O arquivo {0} não existe.", strPathArqPdf)); } ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = strPathExeAdobeReader; string args = String.Format("/t \"{0}\" \"{1}\"", strNomeArquivoPdf, strNomeImpressora); startInfo.Arguments = args; startInfo.CreateNoWindow = true; startInfo.ErrorDialog = false; startInfo.UseShellExecute = false; startInfo.WorkingDirectory = strDiretorioOndeEstaoPdfs; Process process = Process.Start(startInfo); process.WaitForInputIdle(); }
Estou utilizando este método em uma aplicação Windows Forms, da seguinte forma:
private void btnImprimir_Click(object sender, EventArgs e) { string strNomeImpressora = string.Empty; if (pdlImpressoras.ShowDialog() == DialogResult.OK) strNomeImpressora = pdlImpressoras.PrinterSettings.PrinterName; string strPathAcrobatReader = @"C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe"; string strDiretorioComPdfs = @"D:\Danfe-Pdf"; string strNomeArquivoPdf = "00000000000000000000000000000000000000000000-danfe.pdf"; ImprimirPdf(strPathAcrobatReader, strDiretorioComPdfs, strNomeArquivoPdf, strNomeImpressora); }
O item pdlImpresoras é um componente PrintDialog do próprio visual studio. Fica na aba Printing.
É necessário ter instalado o Acrobat Reader na máquina.
[]´s
Drausio Henrique Chiarotti- Sugerido como Resposta Tiago de Campos Alves quarta-feira, 30 de dezembro de 2009 15:29
-
Julian,
Da uma olhada neste código:
http://msdn.microsoft.com/en-us/library/ms552913.aspx
Talvez ajude.
[]´s -
De uma olhada:
http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/d7d713bd-be7e-41d6-bc10-e6b96b3c2f34?prof=required
[]´s
Drausio Henrique Chiarotti -
Julian,
Esse processo funciona bem...
private void Imprimir(string p_pathFilePdf) { try { FileInfo file = new FileInfo(p_pathFilePdf); if (file.Exists) { Process process = new Process(); Process objP = new Process(); objP.StartInfo.FileName = p_pathFilePdf; objP.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; //Hide the window. objP.StartInfo.Verb = "print"; objP.StartInfo.CreateNoWindow = true; objP.Start(); objP.CloseMainWindow(); } else { LogProcesso("OK", "MandaImprimirPS()", "Arquivo não existe."); } } catch (Exception ex) { LogProcesso("Erro", ex.Source, ex.Message); } }
[]´s- Sugerido como Resposta Tiago de Campos Alves quarta-feira, 30 de dezembro de 2009 15:30
- Marcado como Resposta Heloisa PiresModerator terça-feira, 3 de julho de 2012 13:56
-