Formatacao errada com o win32prn

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

Moderador: Moderadores

marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Formatacao errada com o win32prn

Mensagem por marcos.gurupi »

Caros, pq quando imprimo qualquer relatorio em impressoras matriciais a paginacao sai errada, ou seja, comeca certo jah na segunda pagina em diante (no salto da pagina) ele inicia mais em baixo e isso vai acumulando no relatorio ficando as paginas seguintes fora de padrao. Quando imprimo em impressora jato/laser sai normal. Segue abaixo o codigo:

Código: Selecionar todos

function confimpr()

#define FORM_A4 9

#define PS_SOLID 0 

#define RGB( nR,nG,nB ) ( nR + ( nG * 256 ) + ( nB * 256 * 256 ) ) 

#define BLACK RGB( 0x0 ,0x0 ,0x0 ) 
#define BLUE RGB( 0x0 ,0x0 ,0x85 ) 
#define GREEN RGB( 0x0 ,0x85,0x0 ) 
#define CYAN RGB( 0x0 ,0x85,0x85 ) 
#define RED RGB( 0x85,0x0 ,0x0 ) 
#define MAGENTA RGB( 0x85,0x0 ,0x85 ) 
#define BROWN RGB( 0x85,0x85,0x0 ) 
#define WHITE RGB( 0xC6,0xC6,0xC6 ) 

LOCAL nPrn:=1, cBMPFile:= SPACE( 40 )
LOCAL oItems:=aPrn:= GetPrinters()
Local oModDlg, oFont := HFont():Add( "MS Sans Serif",0,-13 )
Local oList
vmens1:=vmens2:=vmens3:=""


   INIT DIALOG oModDlg CLIPPER NOEXIT TITLE "Escolha a impressora"  ;
   AT 0,0  SIZE 550,350   ;
   FONT oFont

 @ 20,20 GET COMBOBOX oList ITEMS oItems SIZE 500, 250
//   @ 10,40 LISTBOX oList ITEMS oItems ;
//             OF oModDlg                  ;
//             INIT 1 ;
//             SIZE 510, 220            ;
//             TOOLTIP "Escolha a impressora"       


   @  10,280 BUTTON "Ok" SIZE 50, 32 ON CLICK {||oModDlg:lResult:=.T.,EndDialog()} STYLE WS_TABSTOP + BS_DEFPUSHBUTTON
   ACTIVATE DIALOG oModDlg
   oFont:Release()
   nPrn:=oList
   IF oModDlg:lResult
      IF EMPTY(aPrn)
         atenc(19,10,"Nao existe impressora instalada.")
         return .f.
      ENDIF 
      DO WHILE !EMPTY(nPrn) 
         cBMPfile:=""
         IF !EMPTY(nPrn) 
            PrnTest(aPrn[nPrn], cBMPFile)
         ENDIF
         exit
      enddo
   ENDIF
Return Nil


FUNCTION PrnTest(cPrinter, cBMPFile) 

local arqimp:=alltrim(netname())+STRZERO(SECONDS(),5,0)
oPrinter:= Win32Prn():New(cPrinter)
oPrinter:Landscape:= .F.
oPrinter:FormType := FORM_A4 

oPrinter:Copies := 1 
IF !oPrinter:Create() 
   atenc(19,10,"Nao foi possivel imprimir.")
ELSE 
   IF !oPrinter:startDoc((arqimp)) 
      atenc(19,10,"Nao foi possivel iniciar a impressao.")
   endif
endif
cabecalho(oPrinter)
return .t.


function cabecalho(oPrinter)

oPrinter:NewLine() 
oPrinter:NewLine() 
oPrinter:Bold(800) // NEGRITO
oPrinter:SetFont('Courier New',18,0)
oPrinter:TextOUT(padc(transform(alltrim(EMPRESA->FANTASIA),"@!"),60))
oPrinter:Bold(0) // Normal
oPrinter:SetFont('Courier New',14,0)
oPrinter:NewLine() 
oPrinter:TextOut(padc(transform(alltrim(EMPRESA->ENDERECO),"@S24")+" - "+transform(alltrim(EMPRESA->CIDADE),"@S10")+" - "+transform(alltrim(EMPRESA->BAIRRO),"@S10"),70))
oPrinter:NewLine() 
oPrinter:TextOut(padc(transform(EMPRESA->TELEFONE,"(99999) 9999-9999"),70))
oPrinter:NewLine() 
oPrinter:TextOut(padc(ALLTRIM("CNPJ:"+EMPRESA->CGC)+"  I.E."+ALLTRIM(EMPRESA->INSCRICAO),70))
oPrinter:NewLine()
****oPrinter:Line(0, oPrinter:PosY+5, 2000, oPrinter:PosY+5)
oPrinter:NewLine()
*oPrinter:SetFont('Courier New',12,0)
return .t.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tente com outros tamanho de folhas, por acaso vc esta usando A4 na Matricial ?

#define FORM_A4 9
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Você configurou o formulário pra A4 numa matricial. Mas que papel você botou na impressora? Se for contínuo, acho que o padrão é 11" (uns 275mm). Mas o A4 é de 294mm.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Mensagem por marcos.gurupi »

Sendo assim surge outro problema. Quando o usuario imprimi ele pode escolher uma laser (varios modelos), jato de tinta (varios modelos) e matricial (outros varios modelos) entaum o q eu escolher como formulario no sistema n iria funcionar, teria como pegar o formulario q estah configurado no setup da impressora (windows)?

Marcos Roberto
Avatar do usuário
EANDRIOLI
Usuário Nível 3
Usuário Nível 3
Mensagens: 109
Registrado em: 22 Jun 2007 18:31
Localização: Sorriso-MT

Mensagem por EANDRIOLI »

Amigo...

Creio que o melhor mesmo é voce, quando quiser imprimir em matriciail, utilizar o comando PRINTFILERAW, é como se fosse imprimir direto do Clipper, e se for imprimir em Jato ou Laser, utilizar a Classe Win32Prn.

Saudações,

ERASMO :)Pos
Avatar do usuário
Vander
Usuário Nível 3
Usuário Nível 3
Mensagens: 214
Registrado em: 23 Jul 2004 01:43
Localização: João Monlevade - MG

Mensagem por Vander »

PRINTFILERAW imprime com formatação ?

Chr(15) , chr(14), etc...

Vander
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

PRINTFILERAW imprime com formatação ?

Chr(15) , chr(14), etc...

Vander
Sim, mas não é qualquer impressora que imprimie, algumas USB funciona outras não. Exemplo PDFCreator NÃO FUNCIONA.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Ao que tudo indica, algumas impressoras não se dão muito bem com o modo RAW.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Exato, esse problema acontece com sua lib tmb. a (wapi.lib), agora para não ter erro, basta usar Win32Prn. Coloque uma opção de mudar o tamanho de folha para o Usuario, escolher que tipo de folha ele quer imprimir.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Felizmente meus clientes só usam HP LaserJet. Nelas não tem erro. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder