none
Imprimir PDF direto p/ impressora RRS feed

  • Pergunta

  • Galera,

    Alguém saberia como realizar a impressão no VB.NET ou C# de um arquivo PDF p/ uma impressora na rede?

    Não encontro nenhum material que fale sobre isso.

    Obrigado.

    Julian

    sexta-feira, 16 de junho de 2006 18:23

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
    segunda-feira, 21 de dezembro de 2009 15:03

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!!!

    sábado, 17 de junho de 2006 22:56
  • Valeu Denis,

    Vou dar uma olhada em algum componente free.

    Se souber de algum me avisa.

    Obrigado.

    Julian

    terça-feira, 20 de junho de 2006 01:10
  • 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
    segunda-feira, 14 de dezembro de 2009 13:39
  • Julian,

    Da uma olhada neste código:
    http://msdn.microsoft.com/en-us/library/ms552913.aspx

    Talvez ajude.

    []´s

    segunda-feira, 14 de dezembro de 2009 17:28
  • 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
    segunda-feira, 21 de dezembro de 2009 15:03
  • Estou tentando usar esse mesmo procedimento para imprimir documento PDF direto na impressora!

    Porém precisaria selecionar uma bandeja da impressora para imprimir!

    Para isso seria necessário mais algum parâmetro?

    quarta-feira, 9 de março de 2016 12:46