Página 1 de 2

impressão de PDF

Enviado: 06 Nov 2020 18:11
por cjp
Pessoal, estou usando o código abaixo, que recebi de alguém em algum grupo, para imprimir PDFs. Funciona bem.
Mas gostaria que o sistema imprimisse diretamente na impressora padrão, sem abrir a caixa de diálogo do Windows para confirmar a impressão.
Alguém sabe me dizer se isso é possível?

Código: Selecionar todos

FUNCTION print_somepdf(cNomePDF)
         LOCAL cPrn,ncop := 1
		 
         Win_PrintDlgDC( @cPrn,,,ncop)
//                  win_PrintDlgDC( [@<cDevice>],[<nFromPage>],[<nToPage>],[<nCopies>] )
         IF !( EMPTY( cPrn ) )
            wapi_ShellExecute( 0, "print",cNomePDF, cPrn , 0, 0 )
         ENDIF
RETURN


impressão de PDF

Enviado: 06 Nov 2020 18:48
por Fernando queiroz
tenho usado o SUMATRA para isso

WAPI_ShellExecute(NIL, 'OPEN', hb_Dirbase()+'SUMATRA\SumatraPDF.EXE', '"' + oPDF:cFileName + '" -print-to "' + oPDF:cDefaultPrinter + '"',, NIL )

impressão de PDF

Enviado: 07 Nov 2020 00:40
por rochinha
Amiguinhos,

cjp no lugar de Win_PrintDlgDC( @cPrn,,,ncop) use cPrn := Win_PrinterGetDefault()

impressão de PDF

Enviado: 07 Nov 2020 00:59
por cjp
Resolvido. Muito obrigado.

impressão de PDF

Enviado: 01 Dez 2020 23:28
por cjp
Sabem me dizer como faria para imprimir numa impressora específica, que não é a padrão? Teria como colocar o nome da impressora especificamente? Como faria isso?

impressão de PDF

Enviado: 02 Dez 2020 12:24
por rochinha
Amiguinhos,

cjp
Veja que cPrn := Win_PrinterGetDefault() pega o nome da impressora padrão.

Basta colocar o nome da impressora como aparece na lista de impressoras do seu Windows, exemplo: cPrn := "Epson LX 310"

impressão de PDF

Enviado: 08 Dez 2020 14:04
por cjp
Entendido. Muito obrigado.

impressão de PDF

Enviado: 15 Dez 2020 10:04
por cjp
Caros colegas,

Ainda estou com um problema nesta rotina: de vez em quando, não sei porquê, ele resolve não imprimir na impressora padrão, mas em pdf, abrindo uma caixa de diálogo para eu escolher o local onde salvará o pdf.

Fiz a seguinte modificação na rotina, para tentar forçar a imprimir na impressora Epson:

Código: Selecionar todos

         cPrn := Win_PrinterGetDefault()
		 if at("EPSON",upper(cPrn))=0
		    cPrn="EPSON WF-2860 Series"
		 endif
Achei que isso resolveria, mas não resolveu. Ele continua tentando imprimir em pdf.

Antes já tinha tentando com:

Código: Selecionar todos

         Win_PrintDlgDC( @cPrn,,,ncop)
Mas, mesmo escolhendo a impressora Epson, ele não imprimia.

O estranho é que isso ocorre só eventualmente. Na maioria das vezes, imprime diretamente na Epson, o Win_PrinterGetDefault já pega corretamente a Epson.

Também já verifiquei que, quando reinicio o sistema, o problema é corrigido.

Alguém poderia me ajudar com isso?

impressão de PDF

Enviado: 19 Dez 2020 11:52
por Jairo Maia
cjp escreveu:Também já verifiquei que, quando reinicio o sistema, o problema é corrigido.
Está usando impressora WiFi? Impressoras EPSON WiFi perdem a conexão com frequência depois de um tempo de inatividade.

impressão de PDF

Enviado: 08 Abr 2021 14:13
por cjp
Desculpe, mas só agora voltei a este tópico.
De fato, estou usando uma impressora Epson, mas ela está ligada no cabo, não no wi-fi.
Não sei se o problema é na impressora, parece mais ser no meu computador.
Parece que ele está assumindo às vezes o Foxit como impressora padrão.
Pior é que, mesmo quando mudo manualmente a impressora a ser impressa, ele continua tentando imprimir no Foxit.
Por favor, verifiquem se fiz algo errado:

Código: Selecionar todos

            cPrn := Win_PrinterGetDefault()
		 
		 if at("EPSON",upper(cPrn))=0
		    cPrn="EPSON WF-2860 Series"
		 endif
		 
         IF !( EMPTY( cPrn ) )
            wapi_ShellExecute( 0, "print",cNomePDF, cPrn , 0, 0 )
Isso não deveria fazer com que imprimisse sempre na Epson?

impressão de PDF

Enviado: 08 Abr 2021 15:41
por malcarli
Utilizo assim

Código: Selecionar todos

****************** Visualizar e Imprimir Arquivos PDF **************************
Procedure fVerPdf(cFilePdf)
   Local cPrinter:= GetDefaultPrinter(), lCkVisual:= .T.

   If _IsWindowDefined([frmAguarde])
      If _IsControlDefined([Cb_Impressora], [frmAguarde])
         cPrinter:= AllTrim(GetProperty([frmAguarde], [Cb_Impressora], [Item], GetProperty([frmAguarde], [Cb_Impressora], [Value])))
      Endif

      If _IsControlDefined([Ck_Visual], [frmAguarde])
         lCkVisual:= GetProperty([frmAguarde], [Ck_Visual], [Value])
      Endif
   Endif

   If !Hb_FileExists(cFilePdf)
      MsgStop([Arquivo Não Encontrado ou Sem Registros. Verifique!], cSistema)
   _FimEndif

   If Empty(cPrinter) .and. !lCkVisual
      MsgStop([Impressora Não Selecionada.], cSistema)
   _FimEndif

   If lCkVisual
      WAPI_ShellExecute(Nil, [OPEN], cFilePdf, Nil,, Nil )
   Else
      WAPI_ShellExecute(0, [PRINTTO], cFilePdf, ["] + cPrinter + ["], 0, 0)
   Endif
Return (Nil)

impressão de PDF

Enviado: 23 Abr 2021 01:11
por cjp
Testando o teu exemplo, por enquanto não tive mais problemas.
Muito obrigado.

impressão de PDF

Enviado: 19 Mai 2021 10:51
por malcarli
Bom dia, tenho a rotina que postei acima para imprimir um pdf em uma impressora selecionada. Acrobat reader instalado. Usando me x Harbour. Agora em alguns clientes, o problema que o acrobat fica ativo no gerenciador de impressão, elevando a cpu a 100%. Tentei usar rotina para fechar o acrobat, mas se fechar não imprime. Alguma sugestão?

Att.

Marcelo A. L. Carli
Marília/SP
Capital Nacional do Alimento ®

https://malc-informatica.ueniweb.com
http://marcelo.lx.com.br
Email / Skype: malcarli@life.com.br

impressão de PDF

Enviado: 19 Mai 2021 19:37
por Mario Mesquita
Boa noite a todos.

Pessoal, aproveitando o tema PDF, uma coisa estranha me aconteceu e se alguém passou, poder me dar uma luz:

Eu uso a PDF Class para gerar um arquivo PDF, sempre funcionou bem, mas hoje em um cliente, simplesmente o programa não gerou o PDF.

Será algo no Windows, algum bloqueio, algo com permissão de usuário? O programa roda, parece que fez mas não gerou o PDF.

Se alguém passou por algo parecido e puder comentar, desde já agradeço.

Saudações,
Mario.

impressão de PDF

Enviado: 13 Abr 2022 23:08
por cjp
Pessoal, estou tendo um problema com esta função desde que mudei de computador. Até semana passada estava funcionando tudo perfeitamente. Mas agora, no novo computador, está dando um erro estranho (vide imagem anexa).

Segue a função que estou executado, para conferência:

Código: Selecionar todos

FUNCTION print_somepdf(cNomePDF)
         LOCAL cPrn,ncop := 1
	 local cHora
         cPrn="EPSON26B563 (WF-2860 Series)"
         WAPI_ShellExecute(0, [PRINTTO], cNomePDF, ["] + cPrn + ["], 0, 0)
RETURN .t.
Já conferi: a impressora Epson existe, está cadastrada no sistema exatamente com este nome.
A mensagem de erro é estranha, pois não estou imprimindo em PDF.
Alguém me ajuda?