Amigos,
Usando win32prn, como faço a configuração para imprimir em papel A4 com mais de 132 colunas.
No meu caso tenho um relatório com 140 colunas.
[]´s
Impressão Acima de 132 colunas
Moderador: Moderadores
Impressão Acima de 132 colunas
►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)
- Luciano Bonfim
- Usuário Nível 3

- Mensagens: 414
- Registrado em: 23 Ago 2007 09:34
- Localização: Rio de Janeiro / São Paulo
- Contato:
Re: Impressão Acima de 132 colunas
procedure configuraFonte
parameters oPrinter,nomeFonteImpressao
if letraComprimida
if totalColunas > 205
oPrinter:SetFont(nomeFonteImpressao,8,{3,-60})
else
oPrinter:SetFont(nomeFonteImpressao,8,{3,-60})
endif
else
oPrinter:SetFont(nomeFonteImpressao,10, 0)
endif
parameters oPrinter,nomeFonteImpressao
if letraComprimida
if totalColunas > 205
oPrinter:SetFont(nomeFonteImpressao,8,{3,-60})
else
oPrinter:SetFont(nomeFonteImpressao,8,{3,-60})
endif
else
oPrinter:SetFont(nomeFonteImpressao,10, 0)
endif
Muito Obrigado,
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Re: Impressão Acima de 132 colunas
Olá Luciano,
Obrigado pela sua dica.
:)Pos
Obrigado pela sua dica.
:)Pos
►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)
-
leandrolinauer
- Usuário Nível 3

- Mensagens: 413
- Registrado em: 16 Out 2006 10:59
- Localização: Paranaíba-MS
Re: Impressão Acima de 132 colunas
Bom dia Simoes.
Eu estou com o mesmo problema que vc, tenho relatorios comprimidos para lx-300 com mais de 132 colunas, e qualquer configuração que eu faça na win32prn no setfont continua imprimindo apenas 132 colunas fazendo com que o resto caia para linha debaixo, ja mudei que consegui imprimir pequeno mais ainda mesmo assim não faz mais de 132 colunas.
Vc conseguiu resolver o seu problema? Poderia me dar uma mãozinha?
Grato
Eu estou com o mesmo problema que vc, tenho relatorios comprimidos para lx-300 com mais de 132 colunas, e qualquer configuração que eu faça na win32prn no setfont continua imprimindo apenas 132 colunas fazendo com que o resto caia para linha debaixo, ja mudei que consegui imprimir pequeno mais ainda mesmo assim não faz mais de 132 colunas.
Vc conseguiu resolver o seu problema? Poderia me dar uma mãozinha?
Grato
Código: Selecionar todos
Function ImpWIN32PRN(cArq,tamrel) // arquivo e tamanho da linha
Local cTexto, nLinhas, nA, cLinha, oPrinter:=win32prn()
oPrinter:New(cPrinter) //pega a escolhida
oPrinter:Landscape:=.F. //VERTICAL .T. HORIZONTAL
oPrinter:FormType :=1 //9 //1 //9 //9 //12 // letter
oPrinter:Copies :=1
oPrinter:SetPrintQuality(1) // qualidade da impressÆo 1 rascunho 2 normal 3 media 4melhor
oPrinter:Create()
oPrinter:StartDoc()
oPrinter:SetFont("Courier New",12,{3,-55},700,.F.,.F.) //1,18 -50 //7,1,18
nCol:=oPrinter:GetCharWidth() // largura da fonte em pixels
nLin:=oPrinter:GetCharHeight() // altura da fonte em pixels
//abaixo tudo que ja tentei
//oPrinter:SetFont("Courier New",12,{3,-55},700,.F.,.F.) //1,18 -50
//oPrinter:SetFont("Courier New",8,{3,-60},700,.F.,.F.) //1,18 -50
//oPrinter:SetFont("Arial Narrow",8,{3,-60},700,.F.,.F.) //1,18 -50
//oPrinter:SetFont("Courier New",7,{0,15}) //1,18
//oPrinter:SetFont("Courier New",10,10) //10,10 normal
//oPrinter:SetFont("Courier New",7,14) //07,14 comprimido
//oPrinter:SetFont("Courier New",7,{0,18}) //1,18
//oPrinter:SetFont('Courier New',7,{3,-50}) // Compressed print //
//oPrinter:SetFont("Courier New",7,{1,18}) //1,18
//oPrinter:SetFont("ARIAL",2,{1,18}) //1,18
//If TamRel>80
// oPrinter:SetFont('Courier New',7,{1,18})
// oPrinter:SetFont(,,16,,,,255)
//Else
// oPrinter:SetFont('Courier New',7,{1,18})
// oPrinter:SetFont(,,06,,,,255)
//EndIf
oPrinter:TextOut(Space(tamrel),.T.)
cTexto :=MemoRead(cArq)
nLinhas :=mLCount(cTexto,tamrel,1,.F.)
For nA:= 1 To nLinhas
cLinha:=MemoLine(cTexto,tamrel,nA,1,.F.)
If Left(AllTrim(cLinha),1)==Chr(12) //SALTO_PAGINA
oPrinter:NewPage() //eject
ElseIf Left(AllTrim(cLinha),80)==Repl("Ä",80) //se for 196
oPrinter:TextOut(Repl(hb_oemTOansI("-"),136),.T.)
Else
oPrinter:TextOut(hb_oemTOansI(cLinha),.T.)
// oPrinter:TextOutAt(oPrinter:MM_TO_POSX(nA),oPrinter:MM_TO_POSY(005),cLinha)
// oPrinter:TextOutAt(0*nCol,nA*nLin,hb_oemTOansI(cLinha))
EndIf
Next
oPrinter:EndDoc()
oPrinter:Destroy()
Return NIL
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Re: Impressão Acima de 132 colunas
Olá Leandro,
Eu resolvi usando a dica do Luciano,
Esta configuração atendeu o que eu estava precisando.
oPrinter:SetFont('Courier New',8,{3,-53})
Agora no seu caso seria melhor usar a PrintFileRaw() por estar imprimindo em uma Lx-300.
Coloque todas as sequencias escape para impressão:
Ex.: PrintFileRaw
Eu resolvi usando a dica do Luciano,
Esta configuração atendeu o que eu estava precisando.
oPrinter:SetFont('Courier New',8,{3,-53})
Agora no seu caso seria melhor usar a PrintFileRaw() por estar imprimindo em uma Lx-300.
Coloque todas as sequencias escape para impressão:
Código: Selecionar todos
@ 00,00 SAY CHR(27) + "@" //inicializa a impressora
@ 00,00 SAY CHR(27)+CHR(120)+CHR(0) // seleciona modo draft
@ 00,00 SAY CHR(27)+CHR(33)+CHR(1) // 1=seleciona 12 cpp 0=10 cpp
@ 00,00 SAY CHR(27)+CHR(77)+CHR(15) // ativa modo condensado
Código: Selecionar todos
PROCEDURE Main()
LOCAL cPrinter := GetDefaultPrinter()
LOCAL cFile := "arquivo.Txt"
LOCAL nResult := -1
LOCAL cMsg := "PrintFileRaw(): "
CLS
IF Empty( cPrinter )
? "Não há impressora Instalada."
QUIT
ENDIF
nResult := PrintFileRaw( cPrinter, cFile, "Teste Impressão" )
SWITCH nResult
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 += "File " + cFile + " not found" ; EXIT
DEFAULT
cMsg += cFile + " Impressão OK!!!"
END
? cMsg
RETURN
►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)
-
leandrolinauer
- Usuário Nível 3

- Mensagens: 413
- Registrado em: 16 Out 2006 10:59
- Localização: Paranaíba-MS
Re: Impressão Acima de 132 colunas
Boa tarde Simões
Obrigado pela ajuda, eu esqueci de mensionar que uso a lx-300 juntamente e a impressão em DOS esta super correta ainda, mas quando é uma impressora USB (jato de tinta ou laser em A4) não sai correto a impressão.
Exemplo:
Na lx-300 a impressão comprimida em 136 colunas (meus relatorios todos tem 136 colunas) imprime corretamente.
Na laser a impressão comprimida só imprime até 132 colunas e necessito dos dados finais do relatório ou outros 4 caracteres que não saem, conforme o exemplo do luciano teoricamente teria que funcionar, mas usando a configuração "oPrinter:SetFont(nomeFonteImpressao,8,{3,-60})" só muda que o relatorio fica menor em largura, mas se colocar 136 caracteres continuam indo para a linha debaixo.
Grato.
Leandro
Obrigado pela ajuda, eu esqueci de mensionar que uso a lx-300 juntamente e a impressão em DOS esta super correta ainda, mas quando é uma impressora USB (jato de tinta ou laser em A4) não sai correto a impressão.
Exemplo:
Na lx-300 a impressão comprimida em 136 colunas (meus relatorios todos tem 136 colunas) imprime corretamente.
Na laser a impressão comprimida só imprime até 132 colunas e necessito dos dados finais do relatório ou outros 4 caracteres que não saem, conforme o exemplo do luciano teoricamente teria que funcionar, mas usando a configuração "oPrinter:SetFont(nomeFonteImpressao,8,{3,-60})" só muda que o relatorio fica menor em largura, mas se colocar 136 caracteres continuam indo para a linha debaixo.
Grato.
Leandro
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
