Luiz Arruda (ICO) Posted November 21, 2013 Report Share Posted November 21, 2013 Bom dia Pessoal Trocamos as maquinas aqui do escritorio e todas vieram com Win 7 64, até ai tudo bem, só que para imprimir em matricial tive que usar o PrintFileRaw em todos fonts porque ainda uso o velho e rápido padrão Clipper para matricial. O problema é que tenho que colocar o nome da impressora na linha assim PRINTFILERAW( "EPSON LX-300+ /II", "\caminho\MOSTRA13.PRN", "Relatório" ) O problema é que tem outras impressoras matriciais com nomes diferentes, tô tentando assim, porém sem resultados. hDC := GetPrintDC( GetActiveWindow() ) if hDC == 0 cImpressoras := prnGetname() MSGINFO("Impressão cancelada pelo usuário","..::Impressão")Return .f. endif Msginfo("&cImpressoras") Aqui não retorna a impressora selecionada com cImpressoras e não imprime nada Eu gostaria de algo assim cImpressoras := prnGetname() PRINTFILERAW( "&cImpressoras", "\caminho\arquivo.PRN", "Relatório" ) Tem Jeito ?? Desde já obrigado.. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 21, 2013 Report Share Posted November 21, 2013 Tente assim e reporte: //--- imprime no spool do windows, liberando o micro para trabalhar. ImpSpool( "CUPOM.TXT",, .T. ) // esta em DBMANT.PRG impressora USB/matricial //--- opcionamente pode-se apagar o arquivo passando .t. no 3o. parametro. FUNCTION ImpSpool( cFileTxt, cPorta, lErase ) LOCAL CPRINTER // para capturar antes da impressão // cPorta := PrnGetPorta() // WinExec( cPorta ) // depois da impressão // WinExex( "Net Use Lpt1: \Delete" ) // Ficou mais facil e simples do que criar as portas na Classe TDosPrn // cPorta := If( cPorta == nil, Alltrim( PrnGetPort() ), cPorta ) ; lErase := If( lErase == nil, .T., lErase ); //cPorta := PrnGetPort() Default cPorta := Alltrim( PrnGetPort() ), lErase:= .t. cPrinter := PrinterPortToName( cPorta ) IF EMPTY( cPrinter ) cPrinter := PrinterPortToName( "USB002" ) IF EMPTY(cPrinter) cPrinter := PrinterPortToName( "USB001" ) ENDIF ENDIF IF .NOT. FILE( cFileTxt ) MsgInfo( OemToAnsi( "NÇO ACHEI O ARQUIVO MODO TEXTO PARA IMPRIMIR NA MATRICIAL" ), ; OemToAnsi( "NÇO ACHEI O ARQUIVO MODO TEXTO PARA IMPRIMIR NA MATRICIAL" ) ) RETURN( .F. ) ENDIF IF .NOT. EMPTY( cPrinter ) // TEM USB PrintFileRaw( cPrinter, TrueName( "CUPOM.TXT" ), "Impressão de Vendas" ) ELSEIF LEN( cPorta ) <= 5 .and. Left( Upper(cPorta), 4 ) = "LPT1" //--- Spool Local - Matricial em LPT1 cPorta:= "PRN" WAITRUN("COMMAND.COM /C COPY /B " + cFileTxt + " " + cPorta, 0 ) // By Marcelo Ferro ELSEIF Left( Upper(cPorta),4) = "BEMA" .OR. Left( Upper(cPorta),3) = "COM" ) // Impressao em impressoras de rede com im Set Printer To ( cPorta ) // Somente para setar a impressora PrintFileRaw( cPorta , cFileTxt) Set Printer To ( cImpPadrao ) FErase( cFileTxt ) ELSE //--- Spool Remoto - Matricial em LPT1 WAITRUN("COMMAND.COM /C COPY /B " + cFileTxt + " " + cPorta, 0 ) ENDIF IF lErase // Vem .T. da tela de vendas FERASE( cFileTxt ) ENDIF RETURN( .T. ) Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted November 21, 2013 Author Report Share Posted November 21, 2013 Não Deu, não uso Tdos Obrigado.. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 21, 2013 Report Share Posted November 21, 2013 O que voce usa? Te recomendo a NODOSIMP.EXE, muito boa, resolve seus problemas com impressão em modo texto. abs, Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted November 21, 2013 Author Report Share Posted November 21, 2013 Para matricial ainda faço do Jeito que fazia no Clipper Set Printer to @Prow()+1,10 Say "bla bla bla" @Prow(),20 say " | valor1 | Valor2 |Total |" A diferença é que coloco o FileRaw pra direcionar para a impressora Imprime super rápido, sem frescuras e com os mesmo caracteres MS-DOS de antigamente. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 21, 2013 Report Share Posted November 21, 2013 ******************************* Function Imprime(cArq,cPrint) ******************************* * * Local oPrn, aPrn:=GetPrinters() if empty(aPrn) MsgInfo('Não há impressoras instaladas') return .f. endif If cPrint == Nil cPrint := GetDefaultPrinter() EndIf nRet := PrintFileRaw(cPrint,cArq,'Pedido') if nRet < 1 cMsg := 'Erro Imprimindo: ' SWITCH nRet CASE -1 cMsg += "Invalid parameters passed to function" ; EXIT CASE -2 cMsg += "WinAPI OpenPrinter() call failed" ; EXIT CASE -3 cMsg += "WinAPI StartDocPrinter() call failed" ; EXIT CASE -4 cMsg += "WinAPI StartPagePrinter() call failed" ; EXIT CASE -5 cMsg += "WinAPI malloc() of memory failed" ; EXIT CASE -6 cMsg += "Arquivo " + cArq + " não Localizado" ; EXIT END MsgInfo(cMesg) EndIf Return .t. http://www.pctoledo.com.br/forum/download/file.php?id=113&sid=e454b765df7a2625fd31b19ef84f5f28 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 21, 2013 Report Share Posted November 21, 2013 Interessante, http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=13328 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 21, 2013 Report Share Posted November 21, 2013 http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=9472 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 21, 2013 Report Share Posted November 21, 2013 Esta doeu na alma... não consegui funcionar... kkkkkkkkkk http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=7736&start=15 Quote Link to comment Share on other sites More sharing options...
emotta Posted November 21, 2013 Report Share Posted November 21, 2013 Faça assim: PrinterSetup() PRINTFILERAW(PrnGetName(), "\caminho\arquivo.PRN", "Relatório" ) Bom dia Pessoal Trocamos as maquinas aqui do escritorio e todas vieram com Win 7 64, até ai tudo bem, só que para imprimir em matricial tive que usar o PrintFileRaw em todos fonts porque ainda uso o velho e rápido padrão Clipper para matricial. O problema é que tenho que colocar o nome da impressora na linha assim PRINTFILERAW( "EPSON LX-300+ /II", "\caminho\MOSTRA13.PRN", "Relatório" ) O problema é que tem outras impressoras matriciais com nomes diferentes, tô tentando assim, porém sem resultados. hDC := GetPrintDC( GetActiveWindow() ) if hDC == 0 cImpressoras := prnGetname() MSGINFO("Impressão cancelada pelo usuário","..::Impressão")Return .f. endif Msginfo("&cImpressoras") Aqui não retorna a impressora selecionada com cImpressoras e não imprime nada Eu gostaria de algo assim cImpressoras := prnGetname() PRINTFILERAW( "&cImpressoras", "\caminho\arquivo.PRN", "Relatório" ) Tem Jeito ?? Desde já obrigado.. Quote Link to comment Share on other sites More sharing options...
joaosolution Posted November 21, 2013 Report Share Posted November 21, 2013 Luiz Uso desta maneira para pegar a impressora padrão. PrintFileRaw( GetDefaultPrinter(), textfile, "Impressão" ) Para listas as impressoras: imp:=GetPrinters() PrintFileRaw( imp, textfile, "Impressão" ) Att João Bosco Luiz Arruda (ICO) 1 Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted November 21, 2013 Author Report Share Posted November 21, 2013 Resolvido com a dica do EDUARDO MOTTA Simples, e rápido valeu. Obrigado a todos que empenharam em ajudar... PS: o PrinterSet tb. funciona sem o #include "FiveWin" e eu não sabia Quote Link to comment Share on other sites More sharing options...
emotta Posted November 21, 2013 Report Share Posted November 21, 2013 Legal saber Ico, boa sorte. Mas vale só o lembrete da dica do João, onde voce mesmo pode fazer a sua dialog de seleção das impressoras. Por muitos anos usei na forma como te passei a solucao, mas hoje em dia nas dialogs onde solicito dados para gerar relatorio sempre mantenho um combobox com as impressoras e confirmando ja vai direto. Fica menos trabalhoso para o usuario. E para pegar a lista das impressoras uso a funcao que o Joao colocou. Veja a tela como é: abraços Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted November 21, 2013 Author Report Share Posted November 21, 2013 Fica muito legal mesmo, assim que tiver tempo vou tentar fazer isso Eu ainda uso assim hDC := GetPrintDC( GetActiveWindow() ) if hDC == 0 cImpressoras := prnGetname() MSGINFO("Impressão cancelada pelo usuário","..::Impressão") Return .f. ; endif Isso para jatos e Laser, para as portas LPT1 sempre vai direto, basta escolher a impressora. Já vou pensando nisso, as maquinas novas não estão imprimindo em um programa de comtabilidade MS-DOS 16 bits feito em FoxBase, nem com o emulador, e acho que já tá hora de converte-lo. Quote Link to comment Share on other sites More sharing options...
josadac Posted October 2, 2018 Report Share Posted October 2, 2018 O que voce usa? Te recomendo a NODOSIMP.EXE, muito boa, resolve seus problemas com impressão em modo texto. abs, Olá Pessoal, Apesar do post ser antigo, estou precisando de uma ajuda. Um cliente com um sistema de orçamentos rodando há mais de 20 anos, me procurou querendo que o mesmo imprime numa HP M1132, com o NODOSIMP consegui imprimir perfeito, porém estou tendo problema com orçamentos grandes, mesmo utilizando o parametro tamanho 160, o mais reduzido, não coube numa página, utilizo da seguinte forma: Run NODOSIMP <nome do arquivo txt> 160 Existe algum parametro que trata essa questão de mais de uma página ou ele é limitado para imprimir em apenas uma página ? Grato desde já, quem puder me ajudar. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 2, 2018 Report Share Posted October 2, 2018 Veja se ajuda: SET PRINTER TO SET DEVI TO PRINT @ PROW(),00 SAY CHR(15) // REDUZ 140 // SE QUERO LOGO RUN NODOSIMP &WARQ_WIN_TXT 80 SEL/GRA"LOGO.DAT" RUN NODOSIMP &WARQ_WIN_TXT 80 SEL RUN NODOSIMP &WARQ_WIN_TXT 96 SEL RUN NODOSIMP &WARQ_WIN_TXT 96 SEL/PRE/NOANSI RUN NODOSIMP &WARQ_WIN_TXT 120 SEL/APA/MAR9 RUN NODOSIMP &WARQ_WIN_TXT 140 SEL/APA SET PRINTER TO &WARQ_WIN_TXT Quote Link to comment Share on other sites More sharing options...
Josadac Mendes Faquineli Posted October 2, 2018 Report Share Posted October 2, 2018 Olá Kapiaba, Desculpe-me, mas não entendi sua sugestão. O que vc citou seria me mostrando as opções de parâmetros do aplicativo ? Quote Link to comment Share on other sites More sharing options...
Josadac Mendes Faquineli Posted October 2, 2018 Report Share Posted October 2, 2018 Testei, de qq forma traz somente a primeira página. Vc ou alguém mais sugere outros aplicativos que possa me atender ? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 2, 2018 Report Share Posted October 2, 2018 Josadac. você está usando o que? Fivewin ou xHarbour modo console? Como assim mostra só a primeira página? Mostre como você está fazendo, pois assim fica mais fácil te ajudar. Se for Fivewin for windows, não há necessidade de usar a NODOSIMP.EXE. Quote Link to comment Share on other sites More sharing options...
Josadac Mendes Faquineli Posted October 2, 2018 Report Share Posted October 2, 2018 Então Kapiaba, O sistema é em Clipper, até peço desculpa pque o fórum aqui é Fivewin, mas como vi este post sobre o nodosimp, resolvi pedir ajuda aqui, no fórum do clipper, ninguém soube me informar. Vc sabe que no Clipper, qdo está imprimindo, chegando no final da folha, só mandar um @ 01,00 say <alguma coisa>, imprime na próxima página, estou fazendo desta maneira no txt que gero p/ chamar com o nodosimp, porém não salta página. Preciso saber qual o comando que o nodosimp interpreta para saltar página. Quote Link to comment Share on other sites More sharing options...
rochinha Posted October 3, 2018 Report Share Posted October 3, 2018 Amiguinhos, Tente CHR(12) para o comando Eject, mas tinha um macete. Mas pelo que lembro se você enviar uma impressão em um numero de linha menor que o PROW() atual o eject acontece normalmente quando usado diretamente no momento da impressão. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 3, 2018 Report Share Posted October 3, 2018 Josadac, recomendo passar a xHarbour 32 bits modo console, é a mesma coisa que o clipper e não tem muito segredo não para compilar, sem precisar mudar muita coisa em seu Menu Principal. Dúvidas, chame o Rochinha, ele te ensinará a usar o BCC 5.5 e o xHarbour para compilar. Abs. rochinha 1 Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted October 3, 2018 Report Share Posted October 3, 2018 O João tem razão, mas se vc tiver algumas coisas de terceiros ou particular, pode ser que tenha que adequar, mas no geral não terá dificuldades. []s, kapiaba 1 Quote Link to comment Share on other sites More sharing options...
Josadac Mendes Faquineli Posted October 3, 2018 Report Share Posted October 3, 2018 Amiguinhos, Tente CHR(12) para o comando Eject, mas tinha um macete. Mas pelo que lembro se você enviar uma impressão em um numero de linha menor que o PROW() atual o eject acontece normalmente quando usado diretamente no momento da impressão. Olá Rochinha, É exatamente isso que faço em impressoras matriciais, mas na HP não deu certo, vou tentar o CHR(12) conforme sugeriu. Quote Link to comment Share on other sites More sharing options...
Josadac Mendes Faquineli Posted October 3, 2018 Report Share Posted October 3, 2018 Deu certo o CHR(12) Rochinha, Obrigado pela ajuda. Agradeço tbém o Kapiaba e o Jorge pelo apoio moral em migrar para XHARBOUR, é meu sonho, programo em Clipper desde 1992, fiz curso de Java em 2010 mas não entrou na minha cabela, agora HARBOUR ainda não tive oportunidade em dedicar tempo para estudar e por a mão na massa, mas em breve começarei, se Deus quiser, contarei com a ajuda de todos. Grato. kapiaba and aferra 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.