Componente descontinuado e não suportado pelo SmartClient HTML
Recomenda-se o uso da classe FWMSPrinter desenvolvida pelo Framework.
Classe: TMSPrinter
Cria um objeto que permite visualizar e imprimir relatório.
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
Nome | Tipo | Descrição | Obrigatório | Referência |
cDocument | Caracter | Indica o nome descritivo do relatório. | ||
uParam2 | Lógico | Compatibilidade. | ||
uParam3 | Lógico | Compatibilidade. | ||
uParam4 | Caracter | Compatibilidade. | ||
uParam5 | Caracter | Compatibilidade. | ||
uParam6 | Caracter | Compatibilidade. | ||
uParam7 | Lógico | Compatibilidade. | ||
uParam8 | Caracter | Compatibilidade. |
- ()
- Retorna o objeto criado.
oPrint := TMSPrinter():New("Exemplo TMSPrinter")
Box
Cria um objeto do tipo retângulo.
TMSPrinter(): Box ( [ nRow], [ nCol], [ nBottom], [ nRight], [ uParam5] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
nRow | Numérico | Indica a coordenada vertical em pixels. | ||
nCol | Numérico | Indica a coordenada horizontal em pixels. | ||
nBottom | Numérico | Indica a posição do objeto em relação ao rodapé. | ||
nRight | Numérico | Indica a posição do objeto à direita. | ||
uParam5 | Qualquer | Compatibilidade. |
oPrint:Box( 130,10,600,900 );
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] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
nLinha | Numérico | Indica a linha que será calculada. | ||
nColuna | Numérico | Indica a coluna que será calculada. | ||
uParam3 | Array of Record | Compatibilidade. |
nCol1 := 10nRow1 := 10oPrint:Cmtr2Pix( nCol1,nRow1 )/*Resultados:nCol1 := 1107.08955224nRow1 := 1107.26600985*/
FillRect
Cria um objeto do tipo retângulo que pode ser preenchido de uma determinada cor.
TMSPrinter(): FillRect ( [ aCoords], [ oBrush] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
aCoords | Vetor | Indica um array, do tipo numérico, que contêm as coordenadas do retângulo que será construído. | ||
oBrush | Objeto | Indica 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
- ()
- 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
Nome | Tipo | Descrição | Obrigatório | Referência |
cTexto | Caracter | Indica o texto que será calculado. | X | |
oFont | Objeto | Indica o objeto do tipo TFont, utilizado para definir as características da fonte, para realizar o cálculo. | X |
- Retorna a altura do texto.
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
Nome | Tipo | Descrição | Obrigatório | Referência |
cTexto | Caracter | Indica o texto que será calculado. | X | |
oFonte | Objeto | Indica o objeto do tipo TFont, utilizado para definir as características da fonte, para realizar o cálculo. | X |
- (numerico)
- Retorna a largura do texto.
Retorna a largura dos caracteres de uma determinada fonteTMSPrinter(): GetFontWidths ( [ oFont], [ @aFontSize] )
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] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
nTop | Numérico | Indica a coordenada vertical em pixels. | ||
nLeft | Numérico | Indica a coordenada horizontal em pixels. | ||
nBottom | Numérico | Indica a posição do objeto ao rodapé. | ||
nRight | Numérico | Indica a posição do objeto à direita. | ||
uParam5 | Objeto | Compatibilidade. |
oPrint:Line( 130,10,130,900 );
nHorzRes
Retorna a resolução horizontal da impressora configurada.
TMSPrinter(): nHorzRes ( ) --> 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
- ()
- 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
- ()
- 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
- ()
- 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()
Envia o relatório para impressora.
TMSPrinter(): Print ( [ aPags], [ nCopias] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
aPags | Vetor | Indica o array, do tipo numérico, que contêm as páginas que serão impressas. | ||
nCopias | Numérico | Indica 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
- (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
Nome | Tipo | Descrição | Obrigatório | Referência |
cFilePath | Caracter | Indica o nome do arquivo. | ||
nWidthPage | Numérico | Indica a largura da imagem. | ||
nHeightPage | Numérico | Indica a altura da imagem. | ||
nZoom | Numérico | Indica o zoom que a imagem será salva. | ||
nQuality | Numérico | Indica a qualidade da imagem. |
- (logico)
- Retorna verdadeiro (.T.), se a imagem for salva com sucesso; caso contrário, retornará falso (.F.).
Importante |
---|
|
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
Nome | Tipo | Descrição | Obrigatório | Referência |
cFile | Caracter | Indica o nome do arquivo. | X | |
aRange | Vetor | Indica o array, do tipo caracter, que contêm as páginas que serão salvas. |
- (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
Nome | Tipo | Descrição | Obrigatório | Referência |
cFile | Caracter | Indica o nome do arquivo. | X | |
aRange | Vetor | Indica o array, do tipo caracter, que contêm as páginas que serão salvas. |
- (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] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
nRow | Numérico | Indica a coordenada vertical em pixels ou caracteres. | ||
nCol | Numérico | Indica a coordenada horizontal em pixels ou caracteres. | ||
cText | Caracter | Indica o texto que será impresso. | ||
oFont | Objeto | Indica o objeto do tipo TFont utilizado para definir as características da fonte aplicada na exibição do conteúdo do controle visual. | ||
nWidth | Numérico | Indica a largura em pixels do objeto. | ||
nClrText | Numérico | Indica a cor do texto do objeto. | ||
uParam7 | Nulo | Mantido por compatibilidade, caso informado deve ser NIL. | ||
nAlign | Numé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] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
nRow | Numérico | Indica a coordenada vertical em pixels ou caracteres. | ||
nCol | Numérico | Indica a coordenada horizontal em pixels ou caracteres. | ||
cBitmap | Caracter | Indica o diretório e o nome, com extensão BMP (Bitmap), da imagem. | ||
nWidth | Numérico | Indica a largura em pixels do objeto. | ||
nHeight | Numérico | Indica a altura em pixels do objeto. | ||
uParam6 | Numérico | Compatibilidade. | ||
uParam7 | Lógico | Compatibilidade. |
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 )
SetFont
Define a fonte padrão do relatório.
TMSPrinter(): SetFont ( < oFont> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
oFont | Objeto | Indica 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> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
nPage | Numérico | Indica 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] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
nTamanho | Numérico | Indica 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()
Propriedade | Descrição | Tipo |
cDocument | Indica o texto descritivo do relatório. | Caracter |
lDelete | Indica se, verdadeiro (.T.), o relatório será excluído após exibição; caso contrário, falso (.F.). | Lógico |
nPage | Indica o número da página em exibição. | Numérico |
nPageHeight | Indica a altura da página. | Numérico |
nPageWidth | Indica 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