BEMATECH MP-4200 TH comprimir e negritar
Moderador: Moderadores
BEMATECH MP-4200 TH comprimir e negritar
A impressão com PrintFileRaw, fica muito boa para impressoras térmicas por exemplo MP-4200 TH,
o problema é se quiser fazer a mesma impressão em uma impressora HP, não estou conseguindo,
pois alguns clientes usam somente HP, ai estou usando o Win32Prn().
o problema é se quiser fazer a mesma impressão em uma impressora HP, não estou conseguindo,
pois alguns clientes usam somente HP, ai estou usando o Win32Prn().
BEMATECH MP-4200 TH comprimir e negritar
Porter,
Térmica X Jato de tinta sempre haverá diferença na qualidade de impressão
Térmica X Jato de tinta sempre haverá diferença na qualidade de impressão
►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)
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)
BEMATECH MP-4200 TH comprimir e negritar
olá Asimões,
O problema não seria a diferença de impressão,
eu não estou conseguindo sequer imprimir na HP, usando PrintFileRaw.
Harbour 3.2.0dev
O problema não seria a diferença de impressão,
eu não estou conseguindo sequer imprimir na HP, usando PrintFileRaw.
Harbour 3.2.0dev
BEMATECH MP-4200 TH comprimir e negritar
Porter tem que ver se essa impressora tem suporte a impressão formato Raw, se não, tem que usar Win_Prn()
►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)
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)
BEMATECH MP-4200 TH comprimir e negritar
Entrei em Propriedades da impressora, e não encontrei essa informação se tem ou não suporte a formatoPorter tem que ver se essa impressora tem suporte a impressão formato Raw, se não, tem que usar Win_Prn()
Raw, existe outra forma de verificar ?
BEMATECH MP-4200 TH comprimir e negritar
Porter tente o manual da impressora deve ter essa informação lá, a maioria das deskjets tem, qual é o tipo dessa impressora deskjet ou laser ?
►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)
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)
BEMATECH MP-4200 TH comprimir e negritar
Off-topic:
Tem esse tópico da hp pode ser útil fala sobre winprint/raw
https://h30487.www3.hp.com/t5/Impressor ... d-p/275648
Tem esse tópico da hp pode ser útil fala sobre winprint/raw
https://h30487.www3.hp.com/t5/Impressor ... d-p/275648
►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)
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)
BEMATECH MP-4200 TH comprimir e negritar
OB valeu
estou fazendo com chr(15) e com 67 posicoes rs
so que acabou o papel amanha vou comprar umas bobinas e verificar como fica
Ob
Paiva
estou fazendo com chr(15) e com 67 posicoes rs
so que acabou o papel amanha vou comprar umas bobinas e verificar como fica
Ob
Paiva
BEMATECH MP-4200 TH comprimir e negritar
Asimoes,
É uma HP DeskJet 3510 series
Olhei o tópico, não diz como verificar se tem suporte a Raw, vou ler o manual
para ver se encontro algo a respeito.
É uma HP DeskJet 3510 series
Olhei o tópico, não diz como verificar se tem suporte a Raw, vou ler o manual
para ver se encontro algo a respeito.
BEMATECH MP-4200 TH comprimir e negritar
Porter,
Perguntas:
1-Tá com tinta a impressora ?
2-Já imprimiu alguma vez antes ?
Faz um teste com a função abaixo: (se faltar alguma função avisa)
Perguntas:
1-Tá com tinta a impressora ?
2-Já imprimiu alguma vez antes ?
Faz um teste com a função abaixo: (se faltar alguma função avisa)
Código: Selecionar todos
#include "common.ch"
FUNCTION MAIN
IniPrint(.T.,,"PCL")
//IniciaLaser(.T.,"19",.F.)
SetImp( .T., .F. )
?? "TESTE DE IMPRESSAO"
? "TESTE DE IMPRESSAO"
? "TESTE DE IMPRESSAO"
IniPrint(.F.)
RETURN Nil
FUNCTION IniciaLaser(lInicia, cTamanho, lLand)
HB_Default(@lInicia,.T.)
HB_Default(@cTamanho,"20")
HB_Default(@lLand,.F.)
IF lInicia
@ PROW(), PCOL() SAY Chr(27) + "%0A"
IF lLand
@ PROW(), PCOL() SAY CHR(27)+"&l1O"
ELSE
@ PROW(), PCOL() SAY Chr(27) + "&l0O"
ENDIF
@ PROW(), PCOL() SAY CHR(27)+"(12U"
@ PROW(), PCOL() SAY CHR(27)+"(s0p"+cTamanho+"h0s0b4102T"
SetPrc(0,0)
ENDIF
RETURN Nil
FUNCTION ImpLaser(nVer, nHor, nTam, cTexto, cTpLetra, lNegrito)
* nVer: Posicao na VERTICAL em dots - cada 10 pontos correspondem a
* aproximadamente 0,5 cm
* nHor: Posicao na HORIZONTAL em dots - cada 40 pontos correspondem a
* aproximadamente 1 Linha
* nTam: Tamanho da letra - 1, 2, 3, 4, ..., 100
* cTexto: Texto a ser impresso
* cTpLetra: Tipo da letra
* lNegrito: Imprime ou nao em negrito
*
* @ 00,00 SAY CHR(27)+'%0A' --> Comando e obrigatorio. Substitui o SetPrc(00,00)
*
* %0A pcl mode
* *t600R resolucao 600 dpi
* &l1X numero de copia
* *vT negrito
* (19U tabela de simbolos windows 3.1 latin 1
* (s4148t0b0s5.00v1P (s4148t - seleciona fonte univers condensed
* (s0b - (0) normal (3) negrito
* (s0s - condensed
* (s1P - (1) poliespacado (0) monoespacado
* *p1206X posicionamento do cursor na Linha (em dots)
* *p100Y posicionamento do cursor na Coluna (em dots)
*----------------------------------------------------------------------------*
DEFAULT nTam TO 10
DEFAULT cTpLetra TO 'UC'
DEFAULT lNegrito TO .F.
DEFAULT cTexto TO ' '
DO CASE
CASE cTpLetra = 'WD' // WingDings
@ 00,00 SAY CHR(27)+'(579L'+;
CHR(27)+'(s31402t0b0s'+ALLTRIM(STR(nTam,4))+'.00h0P'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'LG' // Letter Gothic
@ 00,00 SAY CHR(27)+'(19U'+;
CHR(27)+'(s4102t0b0s'+ALLTRIM(STR(nTam,4))+'.00h0P'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'AR' // Arial
@ 00,00 SAY CHR(27)+'(19U'+;
CHR(27)+'(s16602t0b0s'+ALLTRIM(STR(nTam,4))+'.00v1P'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'UC' // Universal Condensed
@ 00,00 SAY CHR(27)+'*t600R'+;
CHR(27)+'&l1X'+;
CHR(27)+'(19U'+;
CHR(27)+'(s4148t0b4s'+ALLTRIM(STR(nTam,4))+'.00v1P'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'UB' // Universal Condensed Bold
@ 00,00 SAY CHR(27)+'*t600R'+;
CHR(27)+'&l1X'+;
CHR(27)+'(19U'+;
CHR(27)+'(s4148t3b0s'+ALLTRIM(STR(nTam,4))+'.00v1P'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'CB' // Courier Bold
@ 00,00 SAY CHR(27)+'*t600R'+;
CHR(27)+'&l1X'+;
CHR(27)+'(8U'+;
CHR(27)+'(s0p'+ALLTRIM(STR(nTam,4))+'h0s3b4099T'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'CN' // Courier Normal
@ 00,00 SAY CHR(27)+'*t600R'+;
CHR(27)+'&l1X'+;
CHR(27)+'(8U'+;
CHR(27)+'(s0p'+ALLTRIM(STR(nTam,4))+'h0s4b3099T'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
CASE cTpLetra = 'I250' // Codigo de Barras (Intercalado 2 de 5)
@ 00,00 SAY CHR(27)+'*t600R'+;
CHR(27)+'&l1X'+;
CHR(27)+'(8U'+;
CHR(27)+'(250X'+;
CHR(27)+'*p'+ALLTRIM(STR(nVer,4))+'X'+;
CHR(27)+'*p'+ALLTRIM(STR(nHor,4))+'Y'+;
cTexto
ENDCASE
RETURN Nil
FUNCTION SetImp( lCompacta, lLandScape )
Hb_Default(@lCompacta,.F.)
Hb_Default(@lLandScape,.F.)
* Informações:
* @ 00,00 SAY CHR(27)+'%0A' --> Substitui o SetPrc(00,00)
@ PROW(), PCOL() SAY CHR(27) + "E"
IF lLandScape
@ PROW(), PCOL() SAY CHR(27) + "&l1O"
ENDIF
IF lCompacta
cPclTamanho := "18"
ELSE
cPclTamanho := "10"
ENDIF
@ PROW(), PCOL() SAY CHR(27)+"%0A"
@ PROW(), PCOL() SAY CHR(27)+"(12U"
@ PROW(), PCOL() SAY CHR(27)+"(s0p" + cPclTamanho + "h0s0b4102T"
RETURN .T.
FUNCTION IniPrint(lInicia,nColunas,cPrefixoInicial,cArqMacro,cArquivo,lPreview)
STATIC cFileIni
STATIC cFileFim
STATIC cArq_USU
STATIC lArq_USU
STATIC lArq_PDF
STATIC lTMPMacro
STATIC oDlg_Relatorio
LOCAL cPastaTemp:="D:\TEMPIMP", nTimeOut, cFilePDF, nSecondsStart
DEFAULT lInicia TO .T.,;
nColunas TO 80,;
cPrefixoInicial TO "TXT",;
cArqMacro TO "",;
cArquivo TO "",;
lPreview TO .F.
IF !HB_DirExists(cPastaTemp)
HB_DirCreate(cPastaTemp)
ENDIF
IF lInicia
SET CONSOLE OFF
SET DEVICE TO PRINT
cArqIni :=cPrefixoInicial
cArq_USU :=cArquivo
lArq_USU :=.F.
lTMPMacro:=.F.
lArq_PDF :=.F.
lArq_MAT :=.F.
IF AT("PCL",cPrefixoInicial) > 0
cFileIni:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PI"
cFileFim:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PF"
SET PRINTER TO &cFileIni.
ENDIF
IF AT("TXT",cPrefixoInicial) > 0
cFileIni:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PI"
cFileFim:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PF"
SET PRINTER TO &cFileIni.
ENDIF
IF AT("MAC",cPrefixoInicial) > 0
lTMPMacro:=.T.
cFileIni :=cArqMacro
cFileFim :=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PF"
SET PRINTER TO &cFileIni. ADDITIVE
ENDIF
IF AT("USU",cPrefixoInicial) > 0
lArq_USU:=.T.
cFileIni:=cArquivo
cFileFim:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PF"
ENDIF
IF AT("PDF",cPrefixoInicial) > 0
lArq_PDF:=.T.
cFileIni:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PI"
cFileFim:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PF"
SET PRINTER TO &cFileIni.
ENDIF
IF AT("MAT",cPrefixoInicial) > 0
lArq_MAT:=.T.
cFileIni:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PI"
cFileFim:=cPastaTemp+__PATHSEP()+"&cArqIni._"+StrZero(HB_Random(99999999),8)+".PF"
SET PRINTER TO &cFileIni.
ENDIF
SET PRINT ON
ELSE
IF lTMPMacro
@ PRow(),00 SAY Chr(27)+"E"
lTMPMacro:=Nil
lPreview:=.F.
ENDIF
SET PRINT OFF
SET PRINTER TO
SET DEVICE TO SCREEN
SET CONSOLE ON
IF !lPreview
RenameFile(cFileIni,cFileFim)
IF ! Empty(cArq_USU) .AND. !lArq_USU
RenameFile(cFileIni,cArq_USU)
lArq_USU:=Nil
ENDIF
IF ! lArq_PDF = Nil
IF lArq_PDF
cFilePDF:=StrTran(cFileFim,".PF",".PDF")
nTimeOut:=60
nSecondsStart:=Seconds()
DO WHILE !File(cFilePDF)
IF (Seconds() - nSecondsStart) > nTimeOut
EXIT
ENDIF
hwg_DoEvents()
ENDDO
IF File(cFilePDF)
COPY_ARQ(cFilePDF,.F.)
ENDIF
lArq_PDF:=Nil
ENDIF
ENDIF
ELSE
fErase(cFileIni)
ENDIF
cFileIni :=Nil
cFileFim :=Nil
cArq_USU :=Nil
lArq_USU :=Nil
lArq_PDF :=Nil
lArq_MAT :=Nil
oDlg_Relatorio:=Nil
ENDIF
RETURN cFileIni
FUNCTION MacroTMP(aVetor)
LOCAL cFileMacro, nTmpHandle, lExiste, cFile, cArqEntrada___, I
LOCAL cPastaTemp:="D:\TEMPIMP"
DEFAULT aVetor TO {}
IF !HB_DirExists(cPastaTemp)
HB_DirCreate(cPastaTemp)
ENDIF
cFileMacro:="ERRO NO ARQUIVO DA MACRO"
IF Len(aVetor) > 0
cFileMacro:=cPastaTemp+__PATHSEP()+"MAC_"+StrZero(HB_Random(99999999),8)+".PI"
DO WHILE .T.
cFile :=FileSeek(cFileMacro)
lExiste:=.F.
DO WHILE !Empty(cFile)
cFileMacro:=cPastaTemp+__PATHSEP()+"MAC_"+StrZero(HB_Random(99999999),8)+".PI"
cFile :=FileSeek()
hwg_DoEvents()
ENDDO
IF !lExiste
nTmpHandle := FCreate(cFileMacro)
IF nTmpHandle # - 1
IF FClose(nTmpHandle)
EXIT
ENDIF
ENDIF
ENDIF
ENDDO
cArqEntrada___:=""
FOR I:=1 TO Len(aVetor)
cArqEntrada___+=aVetor[I]+IF(I < Len(aVetor),' + ','')
hwg_DoEvents()
NEXT
cArqEntrada___:='"'+"COPY /B "+cArqEntrada___+" "+cFileMacro+'"'
COPY_ARQ(&cArqEntrada___,.T.)
ENDIF
RETURN (cFileMacro)
FUNCTION Eject
?? Chr(12)
RETURN Nil
STATIC FUNCTION __PATHSEP
RETURN "\"
#pragma BEGINDUMP
#pragma comment( lib, "shell32.lib" )
#include "hbapi.h"
#include <windows.h>
HB_FUNC( COPY_ARQ )
{
SHELLEXECUTEINFO ShExecInfo = {0};
LPCTSTR lpCommand = (LPTSTR) hb_parc( 1 );
BOOL bRetorno = FALSE;
int iLenlpCommand = hb_parclen( 1 ) + 8;
//char * cfinalCommand = ( char * ) hb_xgrab( hb_parclen( 1 ) + 8 );
char * cfinalCommand = ( char * ) hb_xgrab( ( iLenlpCommand + 8 ) * sizeof( char ) );
hb_snprintf(cfinalCommand, iLenlpCommand, "%s%s", "/C ", lpCommand);
//MessageBox( NULL, cfinalCommand, TEXT( HB_I_("TESTE final") ), MB_ICONASTERISK );
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "cmd.exe";
ShExecInfo.lpParameters = cfinalCommand;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
if(ShExecInfo.hProcess !=NULL)
{
if (hb_parl(2))
{
//Aguarda até que a execução tenha sido concluída.
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
CloseHandle(ShExecInfo.hProcess);
}
bRetorno = TRUE;
}
else
{
//Retorna .F.
bRetorno = FALSE;
}
hb_xfree( cfinalCommand );
hb_retl(bRetorno);
}
#pragma ENDDUMP
►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)
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)
BEMATECH MP-4200 TH comprimir e negritar
Melhorando:
Código: Selecionar todos
IniPrint(.T.,,"PCL")
SetImp( .T., .T.) //landscape
SetPrc(0,0)
?? "TESTE DE IMPRESSÇO COM TAM 12"
? "TESTE DE IMPRESSÇO COM TAM 12"
? "TESTE DE IMPRESSÇO COM TAM 12"
? "SetImp()"
SetImp( .T., .F.) //portrait
ImpLaser(0, 0, 12, "", "UC")
?? "TESTE DE IMPRESSÃO COM TAM 12"
? "TESTE DE IMPRESSÃO COM TAM 12"
? "TESTE DE IMPRESSÃO COM TAM 12"
? "ImpLaser()"
IniPrint(.F.)
Código: Selecionar todos
#include "common.ch"
FUNCTION IniPrint( lInicia, nColunas, cPrefixoInicial, cArqMacro, cArquivo, lPreview )
STATIC cFileIni
STATIC cFileFim
STATIC cArq_USU
STATIC lArq_USU
STATIC lArq_PDF
STATIC lTMPMacro
STATIC oDlg_Relatorio
LOCAL cPastaTemp:="D:\TEMPIMP", nTimeOut, cFilePDF, nSecondsStart
DEFAULT lInicia TO .T.,;
nColunas TO 80,;
cPrefixoInicial TO "TXT",;
cArqMacro TO "",;
cArquivo TO "",;
lPreview TO .F.
IF ! Hb_DirExists( cPastaTemp )
Hb_DirCreate( cPastaTemp )
ENDIF
IF lInicia
SET CONSOLE OFF
SET DEVICE TO PRINT
cArqIni :=cPrefixoInicial
cArq_USU :=cArquivo
lArq_USU :=.F.
lTMPMacro:=.F.
lArq_PDF :=.F.
lArq_MAT :=.F.
IF AT( "PCL", cPrefixoInicial ) > 0
cFileIni := cPastaTemp + __PATHSEP() + "&cArqIni._" + StrZero( Hb_Random( 99999999 ), 8 ) + ".PI"
cFileFim := cPastaTemp + __PATHSEP() + "&cArqIni._" + StrZero( Hb_Random( 99999999 ), 8 ) + ".PF"
SET PRINTER TO &cFileIni.
ENDIF
IF AT( "TXT", cPrefixoInicial ) > 0
cFileIni := cPastaTemp + __PATHSEP() + "&cArqIni._" + StrZero( Hb_Random( 99999999), 8 ) + ".PI"
cFileFim := cPastaTemp + __PATHSEP() + "&cArqIni._" + StrZero( Hb_Random( 99999999), 8 ) + ".PF"
SET PRINTER TO &cFileIni.
ENDIF
IF AT( "MAC", cPrefixoInicial ) > 0
lTMPMacro := .T.
cFileIni := cArqMacro
cFileFim := cPastaTemp +__PATHSEP() + "&cArqIni._" + StrZero( Hb_Random( 99999999 ), 8 ) + ".PF"
SET PRINTER TO &cFileIni. ADDITIVE
ENDIF
IF AT( "USU", cPrefixoInicial ) > 0
lArq_USU := .T.
cFileIni := cArquivo
cFileFim := cPastaTemp + __PATHSEP() + "&cArqIni._" + StrZero( Hb_Random( 99999999 ), 8 ) + ".PF"
ENDIF
IF AT( "PDF", cPrefixoInicial ) > 0
lArq_PDF := .T.
cFileIni := cPastaTemp + __PATHSEP() + "&cArqIni._" + StrZero( Hb_Random( 99999999 ), 8 ) + ".PI"
cFileFim := cPastaTemp + __PATHSEP() + "&cArqIni._" + StrZero( Hb_Random( 99999999 ), 8 ) + ".PF"
SET PRINTER TO &cFileIni.
ENDIF
IF AT( "MAT", cPrefixoInicial ) > 0
lArq_MAT := .T.
cFileIni := cPastaTemp + __PATHSEP() + "&cArqIni._" + StrZero( Hb_Random( 99999999 ), 8 ) + ".PI"
cFileFim := cPastaTemp + __PATHSEP() + "&cArqIni._" + StrZero( Hb_Random( 99999999 ), 8 ) + ".PF"
SET PRINTER TO &cFileIni.
ENDIF
SET PRINT ON
ELSE
IF lTMPMacro
@ PRow(),00 SAY Chr(27) + "E"
lTMPMacro := Nil
lPreview := .F.
ENDIF
SET PRINT OFF
SET PRINTER TO
SET DEVICE TO SCREEN
SET CONSOLE ON
IF ! lPreview
RenameFile( cFileIni, cFileFim )
IF ! Empty( cArq_USU ) .AND. ! lArq_USU
RenameFile( cFileIni, cArq_USU )
lArq_USU := Nil
ENDIF
IF ! lArq_PDF = Nil
IF lArq_PDF
cFilePDF := StrTran(cFileFim, ".PF", ".PDF" )
nTimeOut := 60
nSecondsStart := Seconds()
DO WHILE ! File( cFilePDF )
IF ( Seconds() - nSecondsStart ) > nTimeOut
EXIT
ENDIF
hwg_DoEvents()
ENDDO
IF File( cFilePDF )
COPY_ARQ( cFilePDF, .F. )
ENDIF
lArq_PDF := Nil
ENDIF
ENDIF
ImprimeRaw( cFileFim, Win_PrinterGetDefault() ) //imprime na impressora padrão
ELSE
fErase(cFileIni)
ENDIF
cFileIni := Nil
cFileFim := Nil
cArq_USU := Nil
lArq_USU := Nil
lArq_PDF := Nil
lArq_MAT := Nil
oDlg_Relatorio:=Nil
ENDIF
RETURN cFileIni
FUNCTION MacroTMP( aVetor )
LOCAL cFileMacro, nTmpHandle, lExiste, cFile, cArqEntrada___, oElemento
LOCAL cPastaTemp:="D:\TEMPIMP"
DEFAULT aVetor TO {}
IF ! Hb_DirExists( cPastaTemp )
Hb_DirCreate( cPastaTemp )
ENDIF
cFileMacro := "ERRO NO ARQUIVO DA MACRO"
IF Len( aVetor ) > 0
cFileMacro := cPastaTemp +__PATHSEP() + "MAC_" + StrZero( Hb_Random( 99999999 ), 8 ) +".PI"
DO WHILE .T.
cFile := FileSeek( cFileMacro )
lExiste := .F.
DO WHILE ! Empty( cFile )
cFileMacro := cPastaTemp + __PATHSEP() + "MAC_" + StrZero( Hb_Random( 99999999 ), 8 ) + ".PI"
cFile := FileSeek()
hwg_DoEvents()
ENDDO
IF ! lExiste
nTmpHandle := fCreate( cFileMacro )
IF nTmpHandle # - 1
IF fClose( nTmpHandle )
EXIT
ENDIF
ENDIF
ENDIF
ENDDO
cArqEntrada___ := ""
FOR EACH oElemento IN aVetor
cArqEntrada___ += oElemento + IF( ! oElemento:__enumIsLast(), ' + ', '' )
hwg_DoEvents()
NEXT
cArqEntrada___:= '"' + "COPY /B " + cArqEntrada___ + " " + cFileMacro + '"'
COPY_ARQ( &cArqEntrada___., .T. )
ENDIF
RETURN ( cFileMacro )
FUNCTION Eject
?? Chr(12)
RETURN Nil
STATIC FUNCTION __PATHSEP
RETURN "\"
FUNCTION ImprimeRaw( cArqImp, cPrinter )
LOCAL cMsg:="", nRet
nRet := Win_PrintFileRaw( cPrinter, cArqImp, 'PRINTWIN' )
IF nRet < 0
cMsg := 'Erro Imprimindo: ' + Str( nRet ) + ' '
DO CASE
CASE nRet = -1
cMsg+="Parâmetros inválidos passados para função."
CASE nRet = -2
cMsg+="WinAPI OpenPrinter() falha na chamada."
CASE nRet = -3
cMsg+="WinAPI StartDocPrinter() falha na chamada."
CASE nRet = -4
cMsg+="WinAPI StartPagePrinter() falha na chamada."
CASE nRet = -5
cMsg+="WinAPI malloc() falha de memória."
CASE nRet = -6
cMsg+="Arquivo " + cArqImp + " não localizado."
ENDCASE
Hwg_MsgStop( cMsg + Hb_Eol() + 'Informe este problema ao HelpDesk', 'Atenção' )
ENDIF
Hwg_MsgInfo( Str( nRet ) )
RETURN Nil
#pragma BEGINDUMP
#pragma comment( lib, "shell32.lib" )
#include "hbapi.h"
#include <windows.h>
HB_FUNC( COPY_ARQ )
{
SHELLEXECUTEINFO ShExecInfo = {0};
LPCTSTR lpCommand = (LPTSTR) hb_parc( 1 );
BOOL bRetorno = FALSE;
int iLenlpCommand = hb_parclen( 1 ) + 8;
//char * cfinalCommand = ( char * ) hb_xgrab( hb_parclen( 1 ) + 8 );
char * cfinalCommand = ( char * ) hb_xgrab( ( iLenlpCommand + 8 ) * sizeof( char ) );
hb_snprintf(cfinalCommand, iLenlpCommand, "%s%s", "/C ", lpCommand);
//MessageBox( NULL, cfinalCommand, TEXT( HB_I_("TESTE final") ), MB_ICONASTERISK );
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "cmd.exe";
ShExecInfo.lpParameters = cfinalCommand;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
if(ShExecInfo.hProcess !=NULL)
{
if (hb_parl(2))
{
//Aguarda até que a execução tenha sido concluída.
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
CloseHandle(ShExecInfo.hProcess);
}
bRetorno = TRUE;
}
else
{
//Retorna .F.
bRetorno = FALSE;
}
hb_xfree( cfinalCommand );
hb_retl(bRetorno);
}
#pragma ENDDUMP
►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)
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)
BEMATECH MP-4200 TH comprimir e negritar
porter
eu tenho um prg que pega um TXT e imprime em USB
ele e´feito em win32prn
destro dele posso fazer amarrações imprimir log setar cores etc
se o usuário selecionar uma impressora USB gero o txt
se for tipo lx-300(tenho um cadastro com as impressoras e se e´USB ou nao) uso o printfilew caso contrario passo o txt e a impressora para a funcao e ela imprime na USB
eu tenho um prg que pega um TXT e imprime em USB
ele e´feito em win32prn
destro dele posso fazer amarrações imprimir log setar cores etc
se o usuário selecionar uma impressora USB gero o txt
se for tipo lx-300(tenho um cadastro com as impressoras e se e´USB ou nao) uso o printfilew caso contrario passo o txt e a impressora para a funcao e ela imprime na USB


