import.css=/download/attachments/327912/newLayout.css

Classe: TMSPrinter

Cria um objeto que permite visualizar e imprimir relatório.

Este componente não é suportado pelo TOTVS | SmartClient HTML.


Observação: existe uma limitação no componente, onde nenhuma página pode exceder o tamanho de 128KB (kilobytes), caso o limite não seja respeitado, na hora de finalizar a impressão um erro será retornado avisando sobre o limite e a impressão não será gerada.



New

Método construtor da Classe.


TMSPrinter(): New ( [ cDocument], [ uParam2], [ uParam3], [ uParam4], [ uParam5], [ uParam6], [ uParam7], [ uParam8] ) --> oObjeto



NomeTipoDescriçãoObrigatórioReferência
cDocumentCaracterIndica o nome descritivo do relatório.

uParam2LógicoCompatibilidade.

uParam3LógicoCompatibilidade.

uParam4CaracterCompatibilidade.

uParam5CaracterCompatibilidade.

uParam6CaracterCompatibilidade.

uParam7LógicoCompatibilidade.

uParam8CaracterCompatibilidade.


oObjeto
    ()
  • Retorna o objeto criado.

oPrint := TMSPrinter():New("Exemplo TMSPrinter")

Box

Cria um objeto do tipo retângulo.


TMSPrinter(): Box ( [ nRow], [ nCol], [ nBottom], [ nRight], [ uParam5] ) -->



NomeTipoDescriçãoObrigatórioReferência
nRowNuméricoIndica a coordenada vertical em pixels.

nColNuméricoIndica a coordenada horizontal em pixels.

nBottomNuméricoIndica a posição do objeto em relação ao rodapé.

nRightNuméricoIndica a posição do objeto à direita.

uParam5QualquerCompatibilidade.



oPrint:Box( 130,10,600,900 );

Cancel

Cancela execução do relatório.


TMSPrinter(): Cancel ( ) -->


oPrint:Cancel()

Canceled

Retorna se o relatório foi cancelado pelo método Cancel().


TMSPrinter(): Canceled ( ) -->


oPrint:Canceled()

Cmtr2Pix

Devolve por referência o valor convertido em pixels de uma coluna e uma linha.


TMSPrinter(): Cmtr2Pix ( [ nLinha], [ nColuna], [ uParam3] ) -->



NomeTipoDescriçãoObrigatórioReferência
nLinhaNuméricoIndica a linha que será calculada.

nColunaNuméricoIndica a coluna que será calculada.

uParam3Array of RecordCompatibilidade.



nCol1 := 10nRow1 := 10oPrint:Cmtr2Pix( nCol1,nRow1 )/*Resultados:nCol1 := 1107.08955224nRow1 := 1107.26600985*/

End

Indica o término do relatório.


TMSPrinter(): End ( ) -->




oPrint:End()

EndPage

Indica o fim da página.


TMSPrinter(): EndPage ( ) -->


oPrint:EndPage()

FillRect

Cria um objeto do tipo retângulo que pode ser preenchido de uma determinada cor.


TMSPrinter(): FillRect ( [ aCoords], [ oBrush] ) -->



NomeTipoDescriçãoObrigatórioReferência
aCoordsVetorIndica um array, do tipo numérico, que contêm as coordenadas do retângulo que será construído.

oBrushObjetoIndica o objeto do tipo TBrush utilizado para definir a cor de preenchimento do shape e responsável pelo preenchimento do retângulo.



oBrush1 := TBrush():New( , CLR_YELLOW )oPrint:FillRect( {100, 10, 200, 200}, oBrush1 )

GetOrientation

Retorna a orientação (Retrato ou Paisagem) do objeto.


TMSPrinter(): GetOrientation ( ) --> nOrint

nOrint
    ()
  • Retorna a orientação do objeto, sendo: 1=Portrait (retrato) ou 2=Landscape (paisagem).

oPrint:GetOrientation() // Result: 1=Portrait(retrato) 2=Landscape(paisagem)

GetTextHeight

Retorna a altura do texto conforme as características da fonte definida.


TMSPrinter(): GetTextHeight ( < cTexto>, < oFont> ) --> nHeight



NomeTipoDescriçãoObrigatórioReferência
cTextoCaracterIndica o texto que será calculado.X
oFontObjetoIndica o objeto do tipo TFont, utilizado para definir as características da fonte, para realizar o cálculo.X


nHeight()
  • Retorna a altura do texto.
Este método retorna ZERO se o componente estiver sendo executado via AppServer Linux.

oFont1 := TFont():New('Courier new',,-18,.T.)nHeight := oPrint:GetTextHeight( "Teste", oFont1)   // Result: 180

GetTextWidth

Retorna a largura do texto conforme as características da fonte definida.


TMSPrinter(): GetTextWidth ( < cTexto>, < oFonte> ) --> nWidth



NomeTipoDescriçãoObrigatórioReferência
cTextoCaracterIndica o texto que será calculado.X
oFonteObjetoIndica o objeto do tipo TFont, utilizado para definir as características da fonte, para realizar o cálculo.X
Este método retorna ZERO se o componente estiver sendo executado via AppServer Linux.
 

Retorno

nWidth
    (numerico)
  • Retorna a largura do texto.
  •  


Retorna a largura dos caracteres de uma determinada fonte


TMSPrinter(): GetFontWidths ( [ oFont], [ @aFontSize] )



NomeTipoDescriçãoObrigatórioReferência
oFontObjetoObjeto do tipo fonteX
aFontSizeArray of RecordVetor passado por referencia que recebera a lista de largura da fonte selecionadaX


aRet()
Vetor passado por referencia que recebera a lista de largura da fonte selecionada
Este método retorna um vetor vazio se o componente estiver sendo executado via AppServer Linux.



IsPrinterActive

Retorna se a impressora está ativa.


TMSPrinter(): IsPrinterActive ( ) -->


oPrint:IsPrinterActive()

Line

Cria um objeto do tipo linha.


TMSPrinter(): Line ( [ nTop], [ nLeft], [ nBottom], [ nRight], [ uParam5] ) -->



NomeTipoDescriçãoObrigatórioReferência
nTopNuméricoIndica a coordenada vertical em pixels.

nLeftNuméricoIndica a coordenada horizontal em pixels.

nBottomNuméricoIndica a posição do objeto ao rodapé.

nRightNuméricoIndica a posição do objeto à direita.

uParam5ObjetoCompatibilidade.



oPrint:Line( 130,10,130,900 );

nHorzRes

Retorna a resolução horizontal da impressora configurada.


TMSPrinter(): nHorzRes ( ) --> nResolução

nResolução
    ()
  • Retorna a resolução horizontal da impressora configurada.

oPrint:nHorzRes()   // Result: 2400

nLogPixelX

Retorna a resolução vertical em pixels da impressora configurada.


TMSPrinter(): nLogPixelX ( ) --> nResolução

nResolução
    ()
  • Retorna a resolução vertical em pixels da impressora configurada.

oPrint:nLogPixelX()   // Result: 300

nLogPixelY

Retorna a resolução horizontal em pixels da impressora configurada.


TMSPrinter(): nLogPixelY ( ) --> nResolução

nResolução
    ()
  • Retorna a resolução horizontal em pixels da impressora configurada.

oPrint:nLogPixelY()   // Result: 300

nVertRes

Retorna a resolução vertical da impressora configurada.


TMSPrinter(): nVertRes ( ) --> nResolução

nResolução
    ()
  • Retorna a resolução vertical da impressora configurada.

oPrint:nVertRes()   // Result: 3168

Preview

Abre a janela de visualização do relatório.


TMSPrinter(): Preview ( ) -->


oPrint:Preview()

Print

Envia o relatório para impressora.


TMSPrinter(): Print ( [ aPags], [ nCopias] ) -->



NomeTipoDescriçãoObrigatórioReferência
aPagsVetorIndica o array, do tipo numérico, que contêm as páginas que serão impressas.

nCopiasNuméricoIndica o número de cópias que serão impressas.



// Imprime duas cópias da página 1 e 2oPrint:Print( {1,2}, 2 )

PrinterName

Retorna o nome da impressora.


TMSPrinter(): PrinterName ( ) --> cImpressora

cImpressora
    (caracter)
  • Retorna o nome da impressora.

oPrint:PrinterName()   // Result: "\\172.16.90.251\Tecmono 2"

Refresh

Atualiza a visualização do relatório.


TMSPrinter(): Refresh ( ) -->


oPrint:Refresh()

ResetPrinter

Exclui o objeto e reinicia suas propriedades.


TMSPrinter(): ResetPrinter ( ) -->


oPrinter:ResetPrinter()

SaveAllAsJpeg

Salva o relatório, no formato JPG (Joint Photographic Group), e gera um arquivo separado para cada página.


TMSPrinter(): SaveAllAsJpeg ( [ cFilePath], [ nWidthPage], [ nHeightPage], [ nZoom], [ nQuality] ) --> lOk



NomeTipoDescriçãoObrigatórioReferência
cFilePathCaracterIndica o nome do arquivo.

nWidthPageNuméricoIndica a largura da imagem.

nHeightPageNuméricoIndica a altura da imagem.

nZoomNuméricoIndica o zoom que a imagem será salva.

nQualityNuméricoIndica a qualidade da imagem.


lOk
    (logico)
  • Retorna verdadeiro (.T.), se a imagem for salva com sucesso; caso contrário, retornará falso (.F.).


Importante
  • Esse método é suportado apenas em Servidores Windows.
  • O método SaveAllAsJpeg() não foi implementado para ser executado em Jobs.
  • Parâmetro nQuality disponível a partir da build 7.00.131227A.


Detalhes sobre as definições de tamanho e zoom


Os valores default(padrão) do método são:

nWidthPage: 700
nHeightPage: 1000
nZoom: 100%
nQuality: 75

Limites aceitos:

nWidthPage: 1800
nHeightPage: 1800
nZoom: Minimo 10% e Máximo 300%
nQuality: 1 a 100

Limitações do método:

Ao utilizar o método SaveAllAsJpeg, as imagens utilizadas no método SayBitmap devem ser obrigatóriamente bitmaps (BMP), sendo o único padrão de imagens aceito para a conversão.


oPrint:SaveAllAsJpeg( cStartPath+'relatorio', 1120, 840, 140, 100 )

SaveAsHTML

Salva o relatório no formato HTML (HyperText Markup Language).


TMSPrinter(): SaveAsHTML ( < cFile>, [ aRange] ) --> lOk



NomeTipoDescriçãoObrigatórioReferência
cFileCaracterIndica o nome do arquivo.X
aRangeVetorIndica o array, do tipo caracter, que contêm as páginas que serão salvas.


lOk
    (logico)
  • Retorna verdadeiro (.T.), se o relatório for salvo com sucesso; caso contrário, retornará falso (.F.).


Importante

O método SaveAsHTML() não foi implementado para ser executado em Jobs.



cFileHtml := "\TREPORT\Relatorio.HTM"lSend := oPrint:SaveAsHTML( cFileHtml, {1,2} ) // Result : .T.

SaveAsODF

Salva o relatório no formato ODF (Open Document Format).


TMSPrinter(): SaveAsODF ( < cFile>, [ aRange] ) --> lOk



NomeTipoDescriçãoObrigatórioReferência
cFileCaracterIndica o nome do arquivo.X
aRangeVetorIndica o array, do tipo caracter, que contêm as páginas que serão salvas.


lOk
    (logico)
  • Retorna verdadeiro (.T.) ser o relatório for salvo com sucesso; caso contrário, retornará falso (.F.).

cFileODF := "\TREPORT\Relatorio.ODF"lSend        := oPrint:SaveAsODF( cFileODF, {1,2} )    //Result: .T.

Say

Cria um objeto do tipo texto.


TMSPrinter(): Say ( [ nRow], [ nCol], [ cText], [ oFont], [ nWidth], [ nClrText], [ uParam7], [ nAlign] ) -->



NomeTipoDescriçãoObrigatórioReferência
nRowNuméricoIndica a coordenada vertical em pixels ou caracteres.

nColNuméricoIndica a coordenada horizontal em pixels ou caracteres.

cTextCaracterIndica o texto que será impresso.

oFontObjetoIndica o objeto do tipo TFont utilizado para definir as características da fonte aplicada na exibição do conteúdo do controle visual.

nWidthNuméricoIndica a largura em pixels do objeto.

nClrTextNuméricoIndica a cor do texto do objeto.

uParam7NuloMantido por compatibilidade, caso informado deve ser NIL.

nAlignNumérico

Indica o alinhamento do texto :0 - (Padrão) Alinhado à esquerda.1 - Alinhado à direita.2 - Centraliza o texto.

Obs: a propriedade nCol define a coordenada horizontal do alinhamento, ou seja, quando alinhado à esquerda nCol define a coordenada desejada para o começo do texto, à direita será o final do texto, e centralizado será o centro do texto. O componente evita que o texto seja impresso fora da margem esquerda, neste caso seu primeiro caractere será impresso na coordenada zero.





oFont1 := TFont():New('Courier new',,-18,.T.)oPrint:Say( 10,10,"Texto para visualização",oFont1,1400,CLR_HRED )

SayBitmap

Cria um objeto do tipo imagem.


TMSPrinter(): SayBitmap ( [ nRow], [ nCol], [ cBitmap], [ nWidth], [ nHeight], [ uParam6], [ uParam7] ) -->



NomeTipoDescriçãoObrigatórioReferência
nRowNuméricoIndica a coordenada vertical em pixels ou caracteres.

nColNuméricoIndica a coordenada horizontal em pixels ou caracteres.

cBitmapCaracterIndica o diretório e o nome, com extensão BMP (Bitmap), da imagem.

nWidthNuméricoIndica a largura em pixels do objeto.

nHeightNuméricoIndica a altura em pixels do objeto.

uParam6NuméricoCompatibilidade.

uParam7LógicoCompatibilidade.



A imagem é ajustada para preencher todo o espaço definido entre a altura e largura do objeto.


oPrint:SayBitmap( 100,200,"C:\Dir\Totvs.bmp",800,800 )

SetCurrentPrinterInUse

Compatibilidade.


TMSPrinter(): SetCurrentPrinterInUse ( ) -->

SetFont

Define a fonte padrão do relatório.


TMSPrinter(): SetFont ( < oFont> ) -->



NomeTipoDescriçãoObrigatórioReferência
oFontObjetoIndica o objeto do tipo TFont utilizado para definir as características da fonte aplicada na exibição do conteúdo do controle visual.X



oFont1 := TFont():New('Courier new',,-18,.T.)oPrint:SetFont( oFont1 )

SetLandscape

Define a orientação do relatório como paisagem (Landscape).


TMSPrinter(): SetLandscape ( ) -->


oPrint:SetLandscape()

SetPage

Define a página que será apresentada.


TMSPrinter(): SetPage ( < nPage> ) -->



NomeTipoDescriçãoObrigatórioReferência
nPageNuméricoIndica o número da página que será apresentada.X



oPrint:SetPage( 10 )

SetPaperSize

Define o tamanho que será adotado pela página que será impressa.


TMSPrinter(): SetPaperSize ( [ nTamanho] ) -->



NomeTipoDescriçãoObrigatórioReferência
nTamanhoNuméricoIndica o tamanho que será utilizado no papel. Para mais informações dos tipos de tamanho disponíveis, consulte a área Observações.



//---------------------------------------------------------------------------------------------------//
// Tamanho de folhas possíveis para o método tmsprinter:setPaperSize()
//---------------------------------------------------------------------------------------------------//

#define DMPAPER_LETTER 1
// Letter 8 1/2 x 11 in

#define DMPAPER_LETTERSMALL 2
// Letter Small 8 1/2 x 11 in

#define DMPAPER_TABLOID 3
// Tabloid 11 x 17 in

#define DMPAPER_LEDGER 4
// Ledger 17 x 11 in

#define DMPAPER_LEGAL 5
// Legal 8 1/2 x 14 in

#define DMPAPER_STATEMENT 6
// Statement 5 1/2 x 8 1/2 in

#define DMPAPER_EXECUTIVE 7
// Executive 7 1/4 x 10 1/2 in

#define DMPAPER_A3 8
// A3 297 x 420 mm

#define DMPAPER_A4 9
// A4 210 x 297 mm

#define DMPAPER_A4SMALL 10
// A4 Small 210 x 297 mm

#define DMPAPER_A5 11
// A5 148 x 210 mm

#define DMPAPER_B4 12
// B4 250 x 354

#define DMPAPER_B5 13
// B5 182 x 257 mm

#define DMPAPER_FOLIO 14
// Folio 8 1/2 x 13 in

#define DMPAPER_QUARTO 15
// Quarto 215 x 275 mm

#define DMPAPER_10X14 16
// 10x14 in

#define DMPAPER_11X17 17
// 11x17 in

#define DMPAPER_NOTE 18
// Note 8 1/2 x 11 in

#define DMPAPER_ENV_9 19
// Envelope #9 3 7/8 x 8 7/8

#define DMPAPER_ENV_10 20
// Envelope #10 4 1/8 x 9 1/2

#define DMPAPER_ENV_11 21
// Envelope #11 4 1/2 x 10 3/8

#define DMPAPER_ENV_12 22
// Envelope #12 4 \276 x 11

#define DMPAPER_ENV_14 23
// Envelope #14 5 x 11 1/2

#define DMPAPER_CSHEET 24
// C size sheet

#define DMPAPER_DSHEET 25
// D size sheet

#define DMPAPER_ESHEET 26
// E size sheet

#define DMPAPER_ENV_DL 27
// Envelope DL 110 x 220mm

#define DMPAPER_ENV_C5 28
// Envelope C5 162 x 229 mm

#define DMPAPER_ENV_C3 29
// Envelope C3 324 x 458 mm

#define DMPAPER_ENV_C4 30
// Envelope C4 229 x 324 mm

#define DMPAPER_ENV_C6 31
// Envelope C6 114 x 162 mm

#define DMPAPER_ENV_C65 32
// Envelope C65 114 x 229 mm

#define DMPAPER_ENV_B4 33
// Envelope B4 250 x 353 mm

#define DMPAPER_ENV_B5 34
// Envelope B5 176 x 250 mm

#define DMPAPER_ENV_B6 35
// Envelope B6 176 x 125 mm

#define DMPAPER_ENV_ITALY 36
// Envelope 110 x 230 mm

#define DMPAPER_ENV_MONARCH 37
// Envelope Monarch 3.875 x 7.5 in

#define DMPAPER_ENV_PERSONAL 38
// 6 3/4 Envelope 3 5/8 x 6 1/2 in

#define DMPAPER_FANFOLD_US 39
// US Std Fanfold 14 7/8 x 11 in

#define DMPAPER_FANFOLD_STD_GERMAN 40
// German Std Fanfold 8 1/2 x 12 in

#define DMPAPER_FANFOLD_LGL_GERMAN 41
// German Legal Fanfold 8 1/2 x 13 in


#INCLUDE "TOTVS.CH"#DEFINE DMPAPER_LETTER 1 // Letter 8 1/2 x 11 inuser function tstMsPrintLocal aCoords1	:= { 1400, 220, 2000, 1000 }Local cStartPath:= GetSrvProfString( "Startpath", "" )Local x			:= 0Local oFont1 := TFont():New( "Times New Roman",,8,,.f.,,,,,  .f. )//Times New RomanLocal oFont2 := TFont():New( "Times New Roman",,10,,.f.,,,,, .f. )Local oFont3 := TFont():New( "Times New Roman",,7,,.f.,,,,, .f. )      Local oFont4 := TFont():New( "Times New Roman",,9,,.f.,,,,, .f. )Local oFont5 := TFont():New( "Times New Roman",,16,,.f.,,,,, .f. )Local oFont6 := TFont():New( "Times New Roman",,18,,.f.,,,,, .f. )Local oFont7 := TFont():New( "Times New Roman",,20,,.f.,,,,, .f. )Local oFont8 := TFont():New( "Times New Roman",,22,,.f.,,,,, .f. )Local oPrn		:= TMSPrinter():New( "tMsPrinter - Teste" )Local oBrush	:= TBrush():New( "", CLR_HBLUE )Local lPreview:= .T.Private oMainWnd:= NilPrivate cAcesso	:= ""lPreview := msgYesNO( "Visualizar antes?" )If !oPrn:IsPrinterActive()		Alert( "Selecione a impressora padrao" )        oPrn:setUp()Else        oPrn:setUp()EndifIf Right(cStartPath,1) <> "\"        cStartPath += Iif( GetRemoteType() == 2, "/", "\" )Endif@ 000,000 To 768, 1024 Dialog oMainWnd Title "Teste tMsPrinter"oPrn:startPage()oPrn:setPortrait()oPrn:setPaperSize( DMPAPER_LETTER )oPrn:Say( 0, 0, " ", oFont1, 100 )oPrn:Say ( 0280, 220, "TESTE DE IMPRESSAO ***fonte 04 Courier_New_de_8",  oFont1 )oPrn:Say ( 0480, 220, "TESTE DE IMPRESSAO ***fonte 04 Courier_New_de_10", oFont2 )oPrn:Say ( 0680, 220, "TESTE DE IMPRESSAO ***fonte 04 Courier_New_de_7",  oFont3 )oPrn:Say ( 0880, 220, "TESTE DE IMPRESSAO ***fonte 04 Courier_New_de_9",  oFont4 )oPrn:Say ( 1080, 220, "TESTE DE IMPRESSAO ***fonte 04 Courier_New_de_16", oFont5 )oPrn:Say ( 1280, 220, "TESTE DE IMPRESSAO ***fonte 04 Courier_New_de_18", oFont6 )oPrn:Say ( 1480, 220, "TESTE DE IMPRESSAO ***fonte 04 Courier_New_de_20", oFont7 )oPrn:Say ( 1680, 220, "TESTE DE IMPRESSAO ***fonte 04 Courier_New_de_22", oFont8 )oPrn:EndPage()oPrn:End()If lPreview        oPrn:Preview()Else        oPrn:Print()EndifActivate Dialog oMainWnd CenteredReturn Nil

SetPortrait

Define a orientação do relatório como retrato (Portrait).


TMSPrinter(): SetPortrait ( ) -->


oPrint:SetPortrait()

Setup

Apresenta a janela de configuração de impressoras.


TMSPrinter(): Setup ( ) -->


oPrint:Setup()

StartPage

Indica o início da página.


TMSPrinter(): StartPage ( ) -->


oPrint:StartPage()


PropriedadeDescriçãoTipo
cDocumentIndica o texto descritivo do relatório.Caracter
lDeleteIndica se, verdadeiro (.T.), o relatório será excluído após exibição; caso contrário, falso (.F.).Lógico
nPageIndica o número da página em exibição.Numérico
nPageHeightIndica a altura da página.Numérico
nPageWidthIndica a largura da página.Numérico



Para utilizar imagem nesta classe, através do método SayBitmap, é necessário que o formato seja BMP (Bitmap). A classe não suporta outro tipo de formato para impressão de imagem.


A classe TMSPrinter utiliza a classe TFont para definir a fonte que será utilizada no relatório. Porém, a classe TMSPrinter tem uma limitação de fontes que podem ser utilizadas.

A seguir, observe os tipos de fontes que são homologadas:

  • Courier New
  • Arial
  • Times New Roman
  • Helvetica
  • Microsoft Sans Serif
  • Verdana
  • Tahoma
  • Andalus
  • Century
  • Cordia New


#INCLUDE "TOTVS.CH"

USER FUNCTION TMSPrinter()
	private cAcesso := Repl(" ",10) 
	
	DEFINE DIALOG oMainWnd TITLE "Exemplo TMSPrinter" FROM 180,180 TO 550,700 PIXEL  
		// Monta objeto para impressão  
		oPrint := TMSPrinter():New("Exemplo TMSPrinter")  
		oPrint:SetPortrait()  
		oPrint:Setup()     
		oPrint:StartPage()                  
		oFont1 := TFont():New('Courier new',,-18,.T.)  
		oPrint:Say( 10,10,"Texto para visualização",oFont1,1400,CLR_HRED )  
		oPrint:SayBitmap( 100,200,"C:\Dir\Totvs.bmp",400,400 )
		oPrint:Line( 130,10,130,900 )
		oPrint:Box( 130,10,600,900 )    
		oBrush1 := TBrush():New( , CLR_YELLOW )  
		oPrint:FillRect( {100, 10, 200, 200}, oBrush1 )  
		oBrush1:End()
		// Visualiza a impressão  
		oPrint:EndPage()       
		oPrint:Preview()  
	ACTIVATE DIALOG oMainWnd CENTERED 
RETURN


Exemplo da classe TMSPrinter

Protheus 10 , TOTVS Application Server 10 , ByYou Application Server