Miniprint modo Paisagem

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
JAIR RANGEL
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 19 Jul 2005 16:01
Localização: RIO DE JANEIRO
Contato:

Miniprint modo Paisagem

Mensagem por JAIR RANGEL »

Olá, a todos!

Depois de procurar em vão por um post falando sobre a minha atual dúvida, resolvi abir o bico:
Utilizando a Miniprint, quando gero relatórios em modo paisagem, na minha impressora de testes, uma Sansung Multifuncional SCX-3200, os relatórios ficam perfeitos. No entanto, quando são impressos no Cliente, algumas colunas ao final do relatório são suprimidas, ou seja, não são impressas. Isso acontece em quase todos os meus clientes.
Eu teria como resolver isto via programação ou seria puramente uma configuração na impressora do cliente?
Talvez no driver da printer, no Windows?

Desde já, um muito obrigado a todos!
MINIGUI + HARBOUR + BRMAKE + CDX
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
Avatar do usuário
JAIR RANGEL
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 19 Jul 2005 16:01
Localização: RIO DE JANEIRO
Contato:

MINIPRINT MODO PAISAGEM

Mensagem por JAIR RANGEL »

Um detalhe curioso é que na impressora do cliente, quando ele imprime em modo paisagem por um outro programa no windows, como o Word, por exemplo, a impressão fica perfeita em modo paisagem. O que sugere que o problema seja na Miniprint, que não consegue configurar a impressora para modo paisagem.

Alguém teria alguma ideia?
MINIGUI + HARBOUR + BRMAKE + CDX
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Miniprint modo Paisagem

Mensagem por asimoes »

Procura o demo2.prg na para \basic\miniprint

Neste fonte tem esse trecho que talvez possa te ajudar.

Com detalhe para a função: GetPrintableAreaWidth

Código: Selecionar todos

cPrinter := GetPrinter()
if Empty( cPrinter )
   return
endif

SELECT PRINTER cPrinter PREVIEW

nLastCol :=GetPrintableAreaWidth() - iif(IsWinNT(), 2, 10)

►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)
LUCAS MACHADO
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 31 Mai 2013 11:43
Localização: RIO DE JANEIRO/RJ

Miniprint modo Paisagem

Mensagem por LUCAS MACHADO »

Jair, eu uso a winprint sem problema nenhum, já testei em várias impressoras. Veja o código anexo.

Código: Selecionar todos

INIT PRINTSYS

SET THUMBNAILS ON

IF  form_P410.combo_printer.ItemCount=0 .OR. ;
    form_P410.combo_printer.Value<=0 .OR. ;
    form_P410.combo_printer.Value>form_P410.combo_printer.ItemCount
    MSGSTOP("Não existem impressoras instaladas","Erro")
    release printsys
    RETURN nil
ENDIF

IF  lpreview
    SELECT PRINTER form_P410.combo_printer.Item(form_P410.combo_printer.Value) PREVIEW
ELSE
    SELECT PRINTER form_P410.combo_printer.Item(form_P410.combo_printer.Value)
ENDIF

RDEFFONT()           // define as fontes disponiveis

select font "F10T"   // Times 10
select pen "p0"

START DOC NAME "Emissão de contra cheques de Funcionarios"

IF  WSI_TP_CCHE = "1" .OR. WSI_TP_CCHE = "3" .OR. WSI_TP_CCHE = "6"
    set duplex vertical
ENDIF

Set Page orientation DMORIENT_LANDSCAPE papersize DMPAPER_A4

DO  P410_EMITE_CONTRA_CHEQUE

END DOC

set page orientation DMORIENT_PORTRAIT papersize DMPAPER_A4 font "F12T"
set duplex off

RELEASE PRINTSYS
Avatar do usuário
JAIR RANGEL
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 19 Jul 2005 16:01
Localização: RIO DE JANEIRO
Contato:

Miniprint modo Paisagem

Mensagem por JAIR RANGEL »

Obrigado Asimões e Lucas Machado!

Grato pelo contato de vocês.
Resolvi o problema mudando os comandos de seleção de impressora. Da seguinte forma:
Antes eu selecionava a impressora assim:

SELECT PRINTER cPrinter ;
ORIENTATION PRINTER_ORIENT_PORTRAIT ;
PAPERSIZE PRINTER_PAPER_LETTER ;
QUALITY PRINTER_RES_MEDIUM ;
PAPERLENGTH nLinhas ;
PAPERWIDTH 210 ;
PREVIEW

Troquei o comando select por este:

SELECT PRINTER DIALOG TO lSelePrinter PREVIEW
If lSelePrinter == .T.
PrintDoc_256()
EndIf

Desta forma, o Operador pode selecionar o modo desejado de impressão: Retrato/Paisagem.

Um abraço,

JAIR RANGEL
MINIGUI + HARBOUR + BRMAKE + CDX
CLIPPER 5.2E + VISUALLIB 2 + BLINKER
Responder