Copiar arquivo PDF já existente para impressora

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Copiar arquivo PDF já existente para impressora

Mensagem por NiltonGM »

Prezados,

Como faço para copiar um arquivo pdf já existente para impressora, busquei nos exemplos e na web e vi muitas coisas de impressão, mas o que eu quero não consegui. Em clipper executávamos assim:

Código: Selecionar todos

cPrint := 'LPT1'
cFile := 'arquivo_x.pdf'
cRun := 'Copy ' + cFile + ' ' + cPrint
!&cRun. 
Só que em Harbour / hmg quero usar: cPrint := GetPrinter() // Impessora Laser/Jato de Tinta escolhida pelo usuário e salva em variável, existe um comando mais elegante em Harbour para jogar o pdf para impressora?

No aguardo.
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Copiar arquivo PDF já existente para impressora

Mensagem por Toledo »

Amigo, você poderia abrir o arquivo PDF e depois é só escolher a impressora onde será impresso.

Código: Selecionar todos

execute file 'arquivo.pdf'
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Copiar arquivo PDF já existente para impressora

Mensagem por NiltonGM »

Oi Toledo,

Eu não me expressei direito, acho melhor explicar o que estou fazendo: é um sistema de monitoramento, as emissões de conhecimentos em PDF ocorre em meu programa na web em PHP para emissão de CT-e de várias filiais em cidades diferentes, usuários emitem os CT-es, após autorizado pela Sefaz meu sistema na web gera o PDF. Na empresa Matriz tem um servidor local ligado a uma ou mais impressoras laser para imprimir as DACTE's (os PDF dos CT-es) porem está na Web e como são muitos PDFs não será possível abri-los na área de trabalho do servidor pois não haverá usuários para manualmente envia-los a impressora, tem que ser dinâmico tipo autorizou, imprimiu automático. É aí que entra a salvação do Harbour, meu programa em Harbour rodando oculto na barra de tarefas no servidor local. Nesse programa local ficará configurado os nomes das impressoras e status online ou offline por filial que imprimem CT-es.
Já consegui fazer-lo rodar na barra de tarefas, acesso o MySQL na web (datacenter), seleciono os CT-es que não foram impressos. A partir daí eu não sei quais são os comandos para o seguintes passos:
1) Dar o donwload do arquivo PDF (eu tenho o link e nome do arquivo na web armazenado no registro do CTe que deverá ser impresso)
2) Após baixar o PDF, copiar automaticamente para impressora local sem intervenção de usuário (em PHP tem funções que pega um PDF através de um link na web para dowload entre servidores na web)

Conto com sua ajuda e do grupo.

Obrigado.
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Copiar arquivo PDF já existente para impressora

Mensagem por Toledo »

NiltonGM escreveu:1) Dar o donwload do arquivo PDF
Você poderia usar FTP para copiar o arquivo, no Contrib do Harbour tem exemplo, veja \contrib\hbtip\tests\dnldftp.prg.
Na HMG não encontrei nada sobre download, não sei se existe algum demo na \SAMPLES da HMG, eu sempre me perco nas pastas da \SAMPLES da HMG, é difícil encontrar alguma coisa por lá. Já na MiniGui Extended, veja as pastas:
C:\MiniGUI_2_4_8\SAMPLES\Advanced\Downloader\download.prg
C:\MiniGUI_2_4_8\SAMPLES\Advanced\FtpClient\demo.prg
NiltonGM escreveu:2) Após baixar o PDF, copiar automaticamente para impressora local sem intervenção de usuário
Bom, neste caso você vai precisar de ajuda de um programa externo, como por exemplo o SumatraPDF.

Comando no SumatraPDF para imprimir da impressora Padrão:
SumatraPDF.exe -print-to-default arquivo.pdf

Para imprimir em um impressora específica:
SumatraPDF.exe -print-to "Nome da Impressora no Windows" arquivo.pdf

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Copiar arquivo PDF já existente para impressora

Mensagem por Toledo »

Amigo, em um outro tópico na seção Harbour você postou:
NiltonGM escreveu:Precisava de algo parecido em Harbour HMG, estou precisando baixar um arquivo PDF através de um link na web.
Toledo escreveu:na MiniGui Extended, veja as pastas:
C:\MiniGUI_2_4_8\SAMPLES\Advanced\Downloader\download.prg
Este demo da MiniGui Extended vai fazer o que você quer, este demo não usa FTP, faz a copia de um arquivo na net, qualquer tipo de arquivo, inclusive PDF.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Copiar arquivo PDF já existente para impressora

Mensagem por NiltonGM »

Oi Toledo,

Quanto a baixar o arquivo remoto conversei com o responsável do Datacenter e me disponibilizaram o acesso FTP, usei as classes HBTIP, já está funcionando.
Agora quanto imprimir automaticamente o PDF baixado via FTP farei testes com o SumatraPDF.exe que vc mencionou. Posto aqui o resultado.

Um forte abraço e muito obrigado.
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Copiar arquivo PDF já existente para impressora

Mensagem por NiltonGM »

Olá Toledo e pessoal do forum,

Usar o programa SumatraPDF.exe só funciona no prompt de comando do DOS, não consegui faze-lo funcionar usando o comando execute do Harbour, o que será que está errado?
Com a pasta SumatraPDF do aplicato na variável PATH, No prompt de comando imprime o pdf assim:
C:\pasta\pdf_ctes>SumatraPDF.exe -print-to Brother_DCP7055 35150757296543000115570010000064551000019170.pdf
Imprime com sucesso.

Já no programa em tempo de execução usando o comando execute não imprime:

Código: Selecionar todos

          Local cFileExe := 'SumatraPDF.exe -print-to ' + cPrinter + ' ' + cFilePDF

          execute file (cFileExe)
Lembrando que coloquei o path do SumatraPDF no PATH do sistema.
Deve haver alguma função ou comando do Harbour para enviar um pdf para impressora que não seja o execute.
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Copiar arquivo PDF já existente para impressora

Mensagem por NiltonGM »

Descobri o que estava errado, a sintaxe do comando execute. Fiz a seguinte correção:

Código: Selecionar todos

//      Local cFileExe := 'SumatraPDF.exe -print-to ' + cPrinter + ' ' + cFilePDF   //<<= Errado
          Local cParameters := '-print-to ' + cPrinter + ' ' + cFilePDF   // <<== Correto

//      execute file (cFileExe)      // <<= Errado

          EXECUTE FILE 'SumatraPDF.exe' PARAMETERS (cParameters)

Funcionou para nossa alegria!!!
:))
Nilton Medeiros
nilton@sistrom.com.br
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Copiar arquivo PDF já existente para impressora

Mensagem por asimoes »

Poder ser impresso desta forma em linha de comando:

start acrord32 /h /p seupdf.pdf
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
NiltonGM
Usuário Nível 3
Usuário Nível 3
Mensagens: 397
Registrado em: 05 Jun 2014 23:47
Localização: Caieiras/SP

Copiar arquivo PDF já existente para impressora

Mensagem por NiltonGM »

asimoes escreveu:Poder ser impresso desta forma em linha de comando:

start acrord32 /h /p seupdf.pdf
Olá Simões, desse jeito não funciona, apenas joga o pdf para o Acrobat Reader que abre na tela e não envia para impressora automaticamente.
Nilton Medeiros
nilton@sistrom.com.br
Responder