impressão de PDF

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

impressão de PDF

Mensagem 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

Inacio de Carvalho Neto
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

impressão de PDF

Mensagem 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 )
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

impressão de PDF

Mensagem por rochinha »

Amiguinhos,

cjp no lugar de Win_PrintDlgDC( @cPrn,,,ncop) use cPrn := Win_PrinterGetDefault()
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

impressão de PDF

Mensagem por cjp »

Resolvido. Muito obrigado.
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

impressão de PDF

Mensagem 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?
Inacio de Carvalho Neto
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

impressão de PDF

Mensagem 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"
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

impressão de PDF

Mensagem por cjp »

Entendido. Muito obrigado.
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

impressão de PDF

Mensagem 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?
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

impressão de PDF

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

impressão de PDF

Mensagem 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?
Inacio de Carvalho Neto
malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

impressão de PDF

Mensagem 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)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

impressão de PDF

Mensagem por cjp »

Testando o teu exemplo, por enquanto não tive mais problemas.
Muito obrigado.
Inacio de Carvalho Neto
malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

impressão de PDF

Mensagem 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
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

impressão de PDF

Mensagem 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.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

impressão de PDF

Mensagem 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?
Anexos
tela.png
Inacio de Carvalho Neto
Responder