Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Cria um objeto que permite visualizar e imprimir relatório.

 


...



Método construtor da classe.

 





FWMsPrinter(): New ( < cFilePrintert >, [ nDevice], [ lAdjustToLegacy], [ cPathInServer], [ lDisabeSetup ], [ lTReport], [ @oPrintSetup], [ cPrinter], [ lServer], [ lPDFAsPNG], [ lRaw], [ lViewPDF], [ nQtdCopy] ) --> oPrinter




 

NomeTipoDescriçãoObrigatórioReferência
cFilePrintertCaracterNome do arquivo de relatório a ser criado
.
(caracteres especiais podem ser removidos da string caso utilizados, pois geram problemas na geração e utilização do arquivo)X
 

nDeviceNuméricoTipos de Saída aceitos:IMP_SPOOL Envia para impressora.IMP_PDF Gera arquivo PDF à partir do relatório.Default é IMP_SPOOL
  


lAdjustToLegacyLógicoSe .T. recalcula as coordenadas para manter o legado de proporções com a classe TMSPrinter. Default é .T.IMPORTANTE: Este cálculos não funcionam corretamente quando houver retângulos do tipo BOX e FILLRECT no relatório, podendo haver distorções de algumas pixels o que acarretará no encavalamento dos retângulos no momento da impressão.
  


cPathInServerCaracterDiretório onde o arquivo de relatório será salvo
  


lDisabeSetupLógicoSe .T. não exibe a tela de Setup, ficando à cargo do programador definir quando e se será feita sua chamada. Default é .F.
  


lTReportLógicoIndica que a classe foi chamada pelo TReport. Default é .F.
  


oPrintSetupObjetoObjeto FWPrintSetup instanciado pelo usuário.
 

X
cPrinterCaracterImpressora destino "forçada" pelo usuário. Default é ""
  


lServerLógicoIndica impressão via Server (.REL Não será copiado para o Client). Default é .F.
 


lParam10
 lPDFAsPNG 
Lógico
.T. Indica que será gerado o PDF no formato PNG. O Default é .T. 
Parâmetro descontinuado, mantido para compatibilidade.

lRawLógico.T. indica impressão RAW/PCL, enviando para o dispositivo de impressão caracteres binários(RAW) ou caracteres programáveis específicos da impressora(PCL)
  


lViewPDFLógicoQuando o tipo de impressão for PDF, define se arquivo será exibido após a impressão. O default é .T.
 


nQtdCopy
 nQtdCopy
NuméricoDefine a quantidade de cópias a serem impressas quando utilizado o metodo de impressão igual a SPOOL. Recomendavel em casos aonde a utilização da classe FwMsPrinter se da por meio de eventos sem a intervenção do usuario (JOBs / Schedule por exemplo)Obs: Aplica-se apenas a ambientes que possuam o fonte FwMsPrinter.prw com data igual ou superior a 03/05/2012.
  
 


lConvertFontLógico.T. indica se converte o tamanho da fonte. Caso .F. não será feita a conversão. O Default é .T.

lHasBufferLógicoA partir da LIB 20240520 será disponibilizado o parâmetro lHasBuffer para definir se deverá ou não ser usado o Buffer de arquivo. Sendo .T. o indicativo para utilização do Buffer e .F. para não utilização. O Default .T.


oPrinter
  • Retorna o objeto criado.

A geração do relatorio em PDF requer interface grafica do SO.


Bloco de código
languagetext
linenumberstrue
lAdjustToLegacy := .F. 
lDisableSetup  := .T.
oPrinter := FWMSPrinter():New("Danfe.rel", IMP_PDF, lAdjustToLegacy, , lDisableSetup)// Ordem obrigátoria de configuração do 
relatóriooPrinter
relatório
oPrinter:SetResolution(72)
oPrinter:SetPortrait()
oPrinter:SetPaperSize(DMPAPER_A4) 
oPrinter:SetMargin(60,60,60,60) // nEsquerda, nSuperior, nDireita, nInferior 
oPrinter:cPathPDF := "c:\directory\" // Caso seja utilizada impressão em IMP_PDF

...





Ativa a chave "Real Font Sizes" que diminui a divergência nos tamanhos de fonte encontrados entre impressões com saída PDF e Fila de Impressão. Faz com que as fontes do texto sejam exibidas em seu tamanho natural sem redimensionamentos. Documentos gerados em PDF, Fila de Impressão, Preview, etc, exibirão textos com tamanhos de fonte muito próximos entre si. Entretanto ainda é importante prever uma pequena margem de erro para que textos não fiquem truncados ou excedam seus limites previstos, isto deve-se ao fato de que a origem do arquivo de fontes usado na impressão pode variar dependendo da plataforma. Se este parâmetro for omitido, o sistema considera a chave desativada por padrão. Disponível somente em builds superiores à 7.00.121227P e a partir da versão 1.4.3 da TotvsPrinter.


FWMsPrinter(): SetParm ("-RFS" ) -->

oPrinter:SetParm( "-RFS")


Insere um retângulo no relatório

Insere um retângulo no relatório.

FWMsPrinter(): Box ( < nRow>, < nCol>, < nBottom>, < nRight>, [ cPixel] ) -->

 

NomeTipoDescriçãoObrigatórioReferência
nRowNuméricoIndica a coordenada vertical em pixels.X 
nColNuméricoIndica a coordenada horizontal em pixels.X 
nBottomNuméricoIndica a posição do objeto em relação ao rodapé.X 
nRightNuméricoIndica a posição do objeto à direita.X 
cPixelCaracterExpessura da linha em pixels. Default é "-2"  

 

oPrinter:Box( 130, 10, 600, 900, "-4")

 

Define cancelamento do relatorio

.


FWMsPrinter(): Cancel ( Box ( < nRow>, < nCol>, < nBottom>, < nRight>, [ cPixel] ) -->


oPrinter:Cancel()

 

Retorna estado do relatório.

FWMsPrinter(): Canceled ( ) --> lRet

 

lRet
    ()
  • Retorna se o relatório foi cancelado pelo método Cancel().
oPrinter:Canceled()

 


NomeTipoDescriçãoObrigatórioReferência
nRowNuméricoIndica a coordenada vertical em pixels.X
nColNuméricoIndica a coordenada horizontal em pixels.X
nBottomNuméricoIndica a posição do objeto em relação ao rodapé.X
nRightNuméricoIndica a posição do objeto à direita.X
cPixelCaracterExpessura da linha em pixels. Default é "-2"


oPrinter:Box( 130, 10, 600, 900, "-4")



Define cancelamento do relatorio.


FWMsPrinter(): Cancel ( ) -->



oPrinter:Cancel()



Retorna estado do relatório

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

FWMsPrinter(): Cmtr2Pix ( [ nLinha], [ nCol] ) -->

 

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

 

nCol1 := 10nRow1 := 10oPrinter:Cmtr2Pix( nCol1, nRow1)//Resultado//nCol1  := 1107.08955224//nRow1 := 1107.26600985

 

Imprime código de barra no padrão EAN13

Obs: A utilização deste método não é homologado para a impressão de relatórios em ambientes que utilizam sistema operacional com o recurso de "Zoom" ou "Lupa" ativo

.


FWMsPrinter():

EAN13(<nRow>, <nCol>, <cCodeBar>, <nTotalWidth>, <nHeight>)

 

NomeTipoDescriçãoObrigatórioReferência
nRowNuméricoPosição relativa ao topoX 
nColNuméricoPosição relativa à esquerdaX 
cCodeBarCaracterTexto a ser transformado em código de barraX 
nTotalWidthNuméricoLargura total do código de barrasX 
nHeightNuméricoAltura da BarraX 

 

Método disponível a partir da Lib do Protheus com label 20161010.
Necessário atualizar a versão da TOTVS Printer (printer.exe) para 1.6.5 ou superior.

#INCLUDE "RPTDEF.CH"
#INCLUDE "FWPrintSetup.ch"
#INCLUDE "protheus.ch"

User Function MyCod128()

Local lAdjustToLegacy := .F.
Local lDisableSetup := .T.
Local cLocal := "\spool"
Local oPrinter

oPrinter := FWMSPrinter():New("exemplo.rel", IMP_PDF, lAdjustToLegacy,cLocal, lDisableSetup, , , , , , .F., )

oPrinter:Say( 20, 30, "Código de barras EAN13:")

oPrinter:Ean13(180/*nRow*/ ,280/*nCol*/,"876543210987"/*cCode*/,100/*nWidth*/,95/*nHeigth*/)
oPrinter:Ean13(230/*nRow*/ ,450/*nCol*/,"987654321098"/*cCode*/,100/*nWidth*/,45/*nHeigth*/)
oPrinter:Ean13(150/*nRow*/ ,30 /*nCol*/,"098765432109"/*cCode*/,186/*nWidth*/,95/*nHeigth*/)
oPrinter:Ean13(300/*nRow*/ ,30 /*nCol*/,"123456789012"/*cCode*/,200/*nWidth*/,95/*nHeigth*/)
oPrinter:Ean13(300/*nRow*/ ,300/*nCol*/,"900223631103"/*cCode*/,250/*nWidth*/,95/*nHeigth*/)

oPrinter:Setup()
if oPrinter:nModalResult == PD_OK
oPrinter:Preview()
EndIf

Return

 

Imprime código de barra no padrão Code128

Obs: A utilização deste metodo não é homologado para a impressão de relatorios em ambientes que utilizam sistema operacional com o recurso de "Zoom" ou "Lupa" ativo.

FWMsPrinter():Code128(<nRow>, <nCol>, <cCodeBar>, <nWidth>, <nHeight>, [lSay], [oFont], [nTotalWidth]) 

 

NomeTipoDescriçãoObrigatórioReferência
nRowNuméricoPosição relativa ao topoX 
nColNuméricoPosição relativa à esquerdaX 
cCodeBarCaracterTexto a ser transformado em código de barraX 
nWidthNuméricoLargura da BarraX 
nHeightNuméricoAltura da BarraX 
lSayLógicoIndica se deve colocar say com o conteúdo em baixo do código de barras  
oFontObjetoObjeto TFont que fornecerá o oFont:nHeight para definição do Say  
nTotalWidthNuméricoIndica largura total do código de barras (invalida o quarto parâmetro)  

 

Método disponível a partir da Lib do Protheus com label 20161010.
Necessário atualizar a versão da TOTVS Printer (printer.exe) para 1.6.5 ou superior.

#INCLUDE "RPTDEF.CH"
#INCLUDE "FWPrintSetup.ch"
#INCLUDE "protheus.ch"

User Function MyCod128()

Local lAdjustToLegacy := .F.
Local lDisableSetup := .T.
Local cLocal := "\spool"
Local oPrinter

oPrinter := FWMSPrinter():New("exemplo.rel", IMP_PDF, lAdjustToLegacy,cLocal, lDisableSetup, , , , , , .F., )

oPrinter:Say( 450, 30, "Código de barras CODE128:")

oPrinter:Code128(470/*nRow*/ ,30/*nCol*/, "123456789011010"/*cCode*/,1/*nWidth*/,50/*nHeigth*/,.T./*lSay*/,,400)
oPrinter:Code128(580/*nRow*/ ,30/*nCol*/, "12345678901"/*cCode*/,2/*nWidth*/,30/*nHeigth*/,.F./*lSay*/)
oPrinter:Code128(650/*nRow*/ ,30/*nCol*/, "123456789011010"/*cCode*/,3/*nWidth*/,40/*nHeigth*/,.T./*lSay*/)
oPrinter:Code128(720/*nRow*/ ,30/*nCol*/, "12345678901"/*cCode*/,4

Canceled ( ) --> lRet


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

oPrinter:Canceled()



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


FWMsPrinter(): Cmtr2Pix ( [ nLinha], [ nCol] ) -->



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

nColNuméricoIndica a coluna que será calculada.


nCol1 := 10nRow1 := 10oPrinter:Cmtr2Pix( nCol1, nRow1)//Resultado//nCol1  := 1107.08955224//nRow1 := 1107.26600985



Imprime código de barra no padrão EAN13

Obs: A utilização deste método não é homologado para a impressão de relatórios em ambientes que utilizam sistema operacional com o recurso de "Zoom" ou "Lupa" ativo.


* Disponível apenas para a impressão na posição horizontal.

FWMsPrinter():EAN13(<nRow>, <nCol>, <cCodeBar>, <nTotalWidth>, <nHeight>)



NomeTipoDescriçãoObrigatórioReferência
nRowNuméricoPosição relativa ao topoX
nColNuméricoPosição relativa à esquerdaX
cCodeBarCaracterTexto a ser transformado em código de barraX
nTotalWidthNuméricoLargura total do código de barrasX
nHeightNuméricoAltura da BarraX


Método disponível a partir da Lib do Protheus com label 20161010.
Necessário atualizar a versão da TOTVS Printer (printer.exe) para 1.6.5 ou superior.
Bloco de código
languagetext
linenumberstrue
#INCLUDE "RPTDEF.CH"
#INCLUDE "FWPrintSetup.ch"
#INCLUDE "protheus.ch"

User Function MyCod128()

Local lAdjustToLegacy := .F.
Local lDisableSetup := .T.
Local cLocal := "\spool"
Local oPrinter

oPrinter := FWMSPrinter():New("exemplo.rel", IMP_PDF, lAdjustToLegacy,cLocal, lDisableSetup, , , , , , .F., )

oPrinter:Say( 20, 30, "Código de barras EAN13:")

oPrinter:Ean13(180/*nRow*/ ,280/*nCol*/,"876543210987"/*cCode*/,100/*nWidth*/,95/*nHeigth*/)
oPrinter:Ean13(230/*nRow*/ ,450/*nCol*/,"987654321098"/*cCode*/,100/*nWidth*/,45/*nHeigth*/)
oPrinter:Ean13(150/*nRow*/ ,30 /*nCol*/,"098765432109"/*cCode*/,186/*nWidth*/,95/*nHeigth*/)
oPrinter:Ean13(300/*nRow*/ ,30 /*nCol*/,"123456789012"/*cCode*/,200/*nWidth*/,95/*nHeigth*/
,.T./*lSay*/,,100)
)
oPrinter:Ean13(300/*nRow*/ ,300/*nCol*/,"900223631103"/*cCode*/,250/*nWidth*/,95/*nHeigth*/)

oPrinter:Setup()


if oPrinter:nModalResult == PD_OK


oPrinter:Preview()


EndIf


Return

 





Code128C

Imprime

codigo

código de barra no

padrão Code128C

padrão Code128

Obs: A utilização deste metodo não é homologado para a impressão de relatorios em ambientes que utilizam sistema operacional com o recurso de "Zoom" ou "Lupa" ativo.


FWMsPrinter():

Code128C ( < nRow>, < nCol>, < cCodeBar>, < nSizeBar> ) -->

Code128(<nRow>, <nCol>, <cCodeBar>, <nWidth>, <nHeight>, [lSay], [oFont], [nTotalWidth]) 


 


NomeTipoDescriçãoObrigatórioReferência
nRowNuméricoPosição relativa ao topoX
 

nColNuméricoPosição relativa à esquerdaX
 

cCodeBarCaracterTexto a ser transformado em código de barraX
 nSizeBar

nWidthNumérico
Tamanho da fonte (código de barra)X 

 

Largura da BarraX
nHeightNuméricoAltura da BarraX
lSayLógicoIndica se deve colocar say com o conteúdo em baixo do código de barras

oFontObjetoObjeto TFont que fornecerá o oFont:nHeight para definição do Say

nTotalWidthNuméricoIndica largura total do código de barras (invalida o quarto parâmetro)


Método disponível a partir da Lib do Protheus com label 20161010.
Necessário atualizar a versão da TOTVS Printer (printer.exe) para 1.6.5 ou superior.

Bloco de código
languagetext
linenumberstrue
#INCLUDE "RPTDEF.CH"
#INCLUDE "FWPrintSetup.ch"
#INCLUDE "protheus.ch"

User Function MyCod128()

Local lAdjustToLegacy := .F.
Local lDisableSetup := .T.
Local cLocal := "\spool"
Local oPrinter

oPrinter
#Include "PROTHEUS.CH"#Include "RPTDEF.CH" #INCLUDE "TBICONN.CH"User Function Code128C()Local oPrinter PREPARE ENVIRONMENT EMPRESA "01" FILIAL "01"oPrinter
 := FWMSPrinter():New(
'teste',6,.F.,,.T.,,,,,.F.)oPrinter:Setup()oPrinter:setDevice(IMP_PDF)oPrinter:cPathPDF :="C:\"oPrinter:Say(10,0,"Teste para Code128C") oPrinter:Code128c(100, 10, '1234567', 50) oPrinter:EndPage()oPrinter:Preview() FreeObj(oPrinter)oPrinter := NilRESET ENVIRONMENTReturn

 

FwMsBar

 

Imprime codigo de barras suportados pela função MsBar().

Obs: A utilização deste metodo não é homologado para a impressão de relatorios em ambientes que utilizam sistema operacional com o recurso de "Zoom" ou "Lupa" ativo.

 

Sintaxe

FWMsPrinter():FWMsBar(cTypeBar,nRow,nCol,cCode,oPrint,lCheck,Color,lHorz, nWidth,nHeigth,lBanner,cFont,cMode,lPrint,nPFWidth,nPFHeigth,lCmtr2Pix)-->

 

Parâmetros

"exemplo.rel", IMP_PDF, lAdjustToLegacy,cLocal, lDisableSetup, , , , , , .F., )

oPrinter:Say( 450, 30, "Código de barras CODE128:")

oPrinter:Code128(470/*nRow*/ ,30/*nCol*/, "123456789011010"/*cCode*/,1/*nWidth*/,50/*nHeigth*/,.T./*lSay*/,,400)
oPrinter:Code128(580/*nRow*/ ,30/*nCol*/, "12345678901"/*cCode*/,2/*nWidth*/,30/*nHeigth*/,.F./*lSay*/)
oPrinter:Code128(650/*nRow*/ ,30/*nCol*/, "123456789011010"/*cCode*/,3/*nWidth*/,40/*nHeigth*/,.T./*lSay*/)
oPrinter:Code128(720/*nRow*/ ,30/*nCol*/, "12345678901"/*cCode*/,4/*nWidth*/,95/*nHeigth*/,.T./*lSay*/,,100)

oPrinter:Setup()
if oPrinter:nModalResult == PD_OK
oPrinter:Preview()
EndIf

Return




Imprime código de barra no padrão Code128C

Observações:

  • A utilização deste método não é homologado para a impressão de relatórios em ambientes que utilizam sistema operacional com o recurso de "Zoom" ou "Lupa" ativo.
  • Esse método trabalha sempre com caracteres em número par (1234, 457985), caso o parâmetro cCodeBar seja enviado com caracteres em quantidade ímpar (15782, 12345), será gerado um zero a mais no código de barras. Portanto fica na responsabilidade do desenvolvedor enviar ou não um zero no começo ou no final da string para compensar a quantidade ímpar de caracteres, exemplo "015782" ou "157820".

FWMsPrinter(): Code128C ( < nRow>, < nCol>, < cCodeBar>, < nSizeBar> ) -->



NomeTipoDescriçãoObrigatórioReferência
nRowNuméricoPosição relativa ao topoX
nColNuméricoPosição relativa à esquerdaX
cCodeBar

Nome

Tipo

Descrição

Obrigatório

Referência

cTypeBar

Caracter

Código do tipo do código de barras:

"EAN13", "EAN8", "UPCA" , "SUP5" , "CODE128",

"INT25","MAT25,"IND25","CODABAR","CODE3_9"

X

 

nRow

Numérico

Posição relativa à esquerda

X

 

nCol

Numérico

Posição relativa ao topo

X

 

cCode
CaracterTexto a ser transformado em código de barraX
 

nSizeBar

oPrint

Objeto

Objeto Printer

 

 

lCheck

Lógico

Se calcula o digito de controle. Defautl .T.

 

 

Color

Numérico

Numero da Cor, utilize a "color.ch". Default CLR_BLACK

 

 

lHorz

Lógico

Se imprime na Horizontal. Default .T.

 

 

nWidth

Numérico

Numero do Tamanho da barra. Default 0.025

 

 

nHeigth

Numérico

Numero da Altura da barra. Default 1.5

 

 

lBanner

Lógico

Se imprime a linha com o código embaixo da barra. Default .T.

 

 

cFont

Caracter

Nome do Fonte a ser utilizado. Defautl "Arial"

 

 

cMode

Caracter

Modo do codigo de barras CO. Default ""

 

 

lPrint

Lógico

Se executa o método Print() de oPrinter pela MsBar. Default .T.

 

 

nPFWidth

Numérico

Número do índice de ajuste da largura da fonte. Default 1

 

 

nPFHeigth

Numérico

Número do índice de ajuste da altura da fonte. Default 1

 

 

lCmtr2Pix

Lógico

Utiliza o método Cmtr2Pix() do objeto Printer.Default .T.

 

 

 

Observações

 Este método utiliza-se da mesma classe utilizada pela MsBar().

 

Exemplos

#INCLUDE "RPTDEF.CH"
#INCLUDE "FWPrintSetup.ch"
#INCLUDE "protheus.ch"
User Function totvsprt()
Local lAdjustToLegacy := .F.
Local lDisableSetup  := .T.
Local oPrinter
Local cLocal          := "\spool"
Local cCodINt25 := "34190184239878442204400130920002152710000053475"
Local cCodEAN :=      "123456789012"
oPrinter := FWMSPrinter():New("exemplo.rel", IMP_PDF, lAdjustToLegacy,cLocal, lDisableSetup, , , , , , .F., )
oPrinter:FWMSBAR("INT25" /*cTypeBar*/,1/*nRow*/ ,1/*nCol*/, cCodINt25/*cCode*/,oPrinter/*oPrint*/,.T./*lCheck*/,/*Color*/,.T./*lHorz*/,0.02/*nWidth*/,0.8/*nHeigth*/,.T./*lBanner*/,"Arial"/*cFont*/,NIL/*cMode*/,.F./*lPrint*/,2/*nPFWidth*/,2/*nPFHeigth*/,.F./*lCmtr2Pix*/
oPrinter:FWMSBAR("EAN13" /*cTypeBar*/,5/*nRow*/ ,1/*nCol*/ ,cCodEAN  /*cCode*/,oPrinter/*oPrint*/,/*lCheck*/,/*Color*/,/*lHorz*/, /*nWidth*/,/*nHeigth*/,/*lBanner*/,/*cFont*/,/*cMode*/,.F./*lPrint*/,/*nPFWidth*/,/*nPFHeigth*/,/*lCmtr2Pix*/)
oPrinter:Setup()
if oPrinter:nModalResult
== PD_OK
oPrinter:Preview()
EndIf
Return
NuméricoTamanho da fonte (código de barra)X



Bloco de código
languagetext
linenumberstrue
#Include "PROTHEUS.CH"
#Include "RPTDEF.CH" 
#INCLUDE "TBICONN.CH"

User Function Code128C()
Local oPrinter  := Nil

PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01"
    oPrinter      := FWMSPrinter():New('teste',6,.F.,,.T.,,,,,.F.)
    oPrinter:Setup()
    oPrinter:setDevice(IMP_PDF)
    oPrinter:cPathPDF :="C:\"
    oPrinter:Say(10,0,"Teste para Code128C")	
    oPrinter:Code128c(100, 10, '1234567', 50)       
    oPrinter:EndPage()
    oPrinter:Preview()
    FreeObj(oPrinter)
    oPrinter := Nil
RESET ENVIRONMENT

Return



FwMsBar



Imprime codigo de barras suportados pela função MsBar().

Obs: A utilização deste metodo não é homologado para a impressão de relatorios em ambientes que utilizam sistema operacional com o recurso de "Zoom" ou "Lupa" ativo.

 

Sintaxe

FWMsPrinter():FWMsBar(cTypeBar,nRow,nCol,cCode,oPrint,lCheck,Color,lHorz, nWidth,nHeigth,lBanner,cFont,cMode,lPrint,nPFWidth,nPFHeigth,lCmtr2Pix)-->

 

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cTypeBar

Caracter

Código do tipo do código de barras:

"EAN13", "EAN8", "UPCA" , "SUP5" , "CODE128",

"INT25","MAT25,"IND25","CODABAR","CODE3_9"

X


nRow

Numérico

Posição relativa à esquerda

X


nCol

Numérico

Posição relativa ao topo

X


cCode

Caracter

Texto a ser transformado em código de barra

X


oPrint

Objeto

Objeto Printer



lCheck

Lógico

Se calcula o digito de controle. Defautl .T.



Color

Numérico

Numero da Cor, utilize a "color.ch". Default CLR_BLACK



lHorz

Lógico

Se imprime na Horizontal. Default .T.



nWidth

Numérico

Numero do Tamanho da barra. Default 0.025



nHeigth

Numérico

Numero da Altura da barra. Default 1.5



lBanner

Lógico

Se imprime a linha com o código embaixo da barra. Default .T.



cFont

Caracter

Nome do Fonte a ser utilizado. Defautl "Arial"



cMode

Caracter

Modo do codigo de barras CO. Default ""



lPrint

Lógico

Se executa o método Print() de oPrinter pela MsBar. Default .T.



nPFWidth

Numérico

Número do índice de ajuste da largura da fonte. Default 1



nPFHeigth

Numérico

Número do índice de ajuste da altura da fonte. Default 1



lCmtr2Pix

Lógico

Utiliza o método Cmtr2Pix() do objeto Printer.Default .T.



 

Observações

 Este método utiliza-se da mesma classe utilizada pela MsBar().


Aviso
titleImportante

O valor mínimo para o parâmetro nWidth é de  0.0164. Valores abaixo deste farão com que a classe não imprima o código de barras.


 

Exemplos

Bloco de código
languagetext
linenumberstrue
#INCLUDE "RPTDEF.CH"
#INCLUDE "FWPrintSetup.ch"
#INCLUDE "protheus.ch"

User Function totvsprt()

Local lAdjustToLegacy := .F.
Local lDisableSetup  := .T.
Local oPrinter
Local cLocal          := "\spool"
Local cCodINt25 := "34190184239878442204400130920002152710000053475"
Local cCodEAN :=      "123456789012"

oPrinter := FWMSPrinter():New("exemplo.rel", IMP_PDF, lAdjustToLegacy,cLocal, lDisableSetup, , , , , , .F., )
oPrinter:FWMSBAR("INT25" /*cTypeBar*/,1/*nRow*/ ,1/*nCol*/, cCodINt25/*cCode*/,oPrinter/*oPrint*/,.T./*lCheck*/,/*Color*/,.T./*lHorz*/,0.02/*nWidth*/,0.8/*nHeigth*/,.T./*lBanner*/,"Arial"/*cFont*/,NIL/*cMode*/,.F./*lPrint*/,2/*nPFWidth*/,2/*nPFHeigth*/,.F./*lCmtr2Pix*/
oPrinter:FWMSBAR("EAN13" /*cTypeBar*/,5/*nRow*/ ,1/*nCol*/ ,cCodEAN  /*cCode*/,oPrinter/*oPrint*/,/*lCheck*/,/*Color*/,/*lHorz*/, /*nWidth*/,/*nHeigth*/,/*lBanner*/,/*cFont*/,/*cMode*/,.F./*lPrint*/,/*nPFWidth*/,/*nPFHeigth*/,/*lCmtr2Pix*/)
oPrinter:Setup()

if oPrinter:nModalResult == PD_OK
 oPrinter:Preview()
EndIf

Return


DataMatrix



Imprime codigo de barra no padrão DataMatrix

Obs: A utilização deste metodo não é homologado para a impressão de relatorios em ambientes que utilizam sistema operacional com o recurso de "Zoom" ou "Lupa" ativo.


FWMsPrinter(): DataMatrix ( < nCol>, < nRow>, < cCodeBar>, < nSizeBar> ) -->


 

DataMatrix

 

Imprime codigo de barra no padrão DataMatrix

Obs: A utilização deste metodo não é homologado para a impressão de relatorios em ambientes que utilizam sistema operacional com o recurso de "Zoom" ou "Lupa" ativo.

FWMsPrinter(): DataMatrix ( < nCol>, < nRow>, < cCodeBar>, < nSizeBar> ) -->

 

NomeTipoDescriçãoObrigatórioReferência
nColNuméricoPosição relativa à esquerdaX 
nRowNuméricoPosição relativa ao topoX 
cCodeBarCaracterTexto a ser codificadoX 
nSizeBarNuméricoTamanho do codigo de barrasX 

 

  Esta opção esta disponivel para TotvsPrinter.exe em versões superiores à 1.3.0.  Para confirmação da versão utilize na linha de comando: totvsprinter -v.

O código de barras será gerado com seu tamanho natural, que pode variar de acordo com a quantidade de caracteres codificados.
No entanto, é importante ressaltar que a imagem do código de barras não pode ser redimensionada para um tamanho inferior ao natural, porque pode ficar corrompida, comprometendo a sua leitura. Sendo assim, é possível apenas passar um tamanho superior, para que a imagem seja escalada corretamente.

Os códigos de barras 2D possuem os seguintes limites da quantidade de caracteres:
• Data Matrix: No máximo 1200 caracteres;
• QR Code: Aproximadamente 2930 caracteres.

#Include "PROTHEUS.CH"#Include "RPTDEF.CH" #INCLUDE "TBICONN.CH"User Function DataMatrix()Local oPrinter   PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01"oPrinter      := FWMSPrinter():New('teste',6,.F.,,.T.,,,,,.F.)oPrinter:Setup()oPrinter:setDevice(IMP_PDF)oPrinter:cPathPDF :="C:\"oPrinter:Say(180,0,"Teste para DataMatrix")oPrinter:DataMatrix(0,300,"DataMatrix gerado com sucesso", 100)	       oPrinter:EndPage()oPrinter:Preview()                                                                   FreeObj(oPrinter)oPrinter := NilRESET ENVIRONMENTReturn

Insere uma elipse no relatório.

FWMsPrinter(): Ellipse ( < nLeft>, < nTop>, < nBottom>, < nRigth>, [ nColorIn], [ nColorOut], [ nLineType], [ cPixel] ) -->

 


NomeTipoDescriçãoObrigatórioReferência
nLeft
nColNumérico
Indica a coordenada horizontal em pixels.
Posição relativa à esquerdaX
 

nRow
nTop
Numérico
Indica a coordenada
Posição relativa ao topo
em pixels.
X
 nBottomNuméricoIndica a posição do objeto em relação ao rodapé.X nRigthNuméricoIndica a posição do objeto à direita.X nColorInNuméricoCor do preenchimento do elipse. Default CLR_BLACK.  nColorOutNuméricoCor da linha do elipse. Default CLR_BLACK  nLineTypeNuméricoEstilo da linha. Default 0. Para mais informações sobre os tipos disponíveis, consulte a área Observações.  cPixelCaracterPixel no formato caractere exemplo “02”, caso necessário us de decimais utilize “-2” para 0,2 Pixels.  

 

Tabelas com as opções de linha disponíveis.

  • 0 - Solid Line;
  • 1 - Dash Line;
  • 2 - Dash Dot Line;
  • 3 - Dash Dot Dot Line;
  • 4 - Dot Line;
  • 5 - Custom Dash Line
oPrinter:Ellipse( 10, 10, 100, 100, CLR_BLACK, CLR_BLACK, 0, “-2”)

 

Indica o fim da página.

FWMsPrinter(): EndPage ( ) -->

oPrinter:EndPage()

 

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

FWMsPrinter(): FillRect ( < aCoords>, [ oBrush], [ cPixel] ) -->

 

NomeTipoDescriçãoObrigatórioReferência
aCoordsVetorVetor de coordenadas {nTop,nLeft,nBottom,nRight}X 
oBrushObjetoIndica o objeto do tipo TBrush utilizado para definir a cor de preenchimento do shape e responsável pelo preenchimento do retângulo.  
cPixelCaracterExpessura da linha em pixels. Default é "-2"  

 

oBrush1 := TBrush():New( , CLR_YELLOW)oPrinter:Fillrect( {100, 10, 200, 200 }, oBrush1, "-2")

 


cCodeBarCaracterTexto a ser codificadoX
nSizeBarNuméricoTamanho do codigo de barrasX


Esta opção esta disponível para TotvsPrinter.exe em versões superiores à 1.3.0.  Para confirmação da versão utilize na linha de comando: totvsprinter -v.

O código é gerado com suas dimensões naturais (que são os valores mínimos sugeridos pelo motor de geração de código de barras 2D), que irão variar de acordo com a quantidade de caracteres codificados.

No entanto, é importante ressaltar que até a versão 1.7.1 do agente TOTVSPrinter a imagem do código de barras não podia ser redimensionada para dimensões inferiores ao natural, porque poderia ficar corrompida, comprometendo a sua leitura. Sendo assim, era possível apenas passar um tamanho superior para que a imagem fosse escalada corretamente. Entretanto, a partir da versão 1.7.2 essa limitação foi removida, permitindo assim que as dimensões da imagem gerada possam ser escaladas para um tamanho inferior ao natural para que seja possível adequar-se a um espaço limitado e fixo, por exemplo. Assim, ao usar esse recurso, é preciso certificar-se de que, após o redimensionamento, um leitor ainda consegue interpretar corretamente as informações codificadas.

Os códigos de barras 2D possuem os seguintes limites da quantidade de caracteres:

  • Data Matrix: No máximo 1200 caracteres
  • QR Code: Aproximadamente 2930 caracteres


Bloco de código
languagetext
linenumberstrue
#Include "PROTHEUS.CH"
#Include "RPTDEF.CH" 
#INCLUDE "TBICONN.CH"

User Function DataMatrix()
Local oPrinter   

PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01"
    oPrinter      := FWMSPrinter():New('teste',6,.F.,,.T.,,,,,.F.)
    oPrinter:Setup()
    oPrinter:setDevice(IMP_PDF)
    oPrinter:cPathPDF :="C:\"
    oPrinter:Say(180,0,"Teste para DataMatrix")
    oPrinter:DataMatrix(0,300,"DataMatrix gerado com sucesso", 100)
    oPrinter:EndPage()
    oPrinter:Preview()
    FreeObj(oPrinter)
    oPrinter := Nil
RESET ENVIRONMENT

Return



Insere uma elipse no relatório.


FWMsPrinter(): Ellipse ( < nLeft>, < nTop>, < nBottom>, < nRigth>, [ nColorIn], [ nColorOut], [ nLineType], [ cPixel] ) -->



Retorna a largura dos caracteres de uma determinada fonte

FWMsPrinter(): GetFontWidths ( [ oFont], [ @aFontSize] ) --> aRet

 

NomeTipoDescriçãoObrigatórioReferência
oFont
nLeft
ObjetoObjeto do tipo fonte  aFontSizeArray of RecordVetor passado por referencia que recebera a lista de largura da fonte selecionada X

 

aRet
    ()
  • Vetor passado por referencia que recebera a lista de largura da fonte selecionada
null

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

FWMsPrinter(): GetOrientation ( ) --> nOrientation

nOrientation
    ()
  • Retorna orientação do relatório. Para mais informações sobre os retornos que podem ser apresentados, consulte a área Observações.

Tabela com os valores de retorno.

  • 0 - Ainda não definido pelo usuário;
  • 1 - Portrait(retrato);
  • 2 - Landscape(paisagem)
oPrinter:GetOrientation()

 

NuméricoIndica a coordenada horizontal em pixels.X
nTopNuméricoIndica a coordenada ao topo em pixels.X
nBottomNuméricoIndica a posição do objeto em relação ao rodapé.X
nRigthNuméricoIndica a posição do objeto à direita.X
nColorInNuméricoCor do preenchimento do elipse. Default CLR_BLACK.

nColorOutNuméricoCor da linha do elipse. Default CLR_BLACK

nLineTypeNuméricoEstilo da linha. Default 0. Para mais informações sobre os tipos disponíveis, consulte a área Observações.

cPixelCaracterPixel no formato caractere exemplo “02”, caso necessário us de decimais utilize “-2” para 0,2 Pixels.


Tabelas com as opções de linha disponíveis.

  • 0 - Solid Line;
  • 1 - Dash Line;
  • 2 - Dash Dot Line;
  • 3 - Dash Dot Dot Line;
  • 4 - Dot Line;
  • 5 - Custom Dash Line

oPrinter:Ellipse( 10, 10, 100, 100, CLR_BLACK, CLR_BLACK, 0, “-2”)



Indica o fim da página

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

.


FWMsPrinter(): GetTextHeight EndPage ( < cTexto>, < oFont> ) --> nHeight



oPrinter:EndPage()



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


FWMsPrinter(): FillRect ( < aCoords>, [ oBrush], [ cPixel] ) -->



NomeTipoDescriçãoObrigatórioReferência
aCoordsVetorVetor de coordenadas {nTop,nLeft,nBottom,nRight}X
oBrush

 

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

 

a cor de preenchimento do shape e responsável pelo preenchimento do retângulo.

cPixelCaracterExpessura da linha em pixels. Default é "-2"
nHeight()Retorna a altura do texto.




oFont1oBrush1 := TFontTBrush():New( 'Courier New', , -18, .T.)nHeight := oPrinter:GetTextheight( "Teste", oFont1)

 

 , CLR_YELLOW)oPrinter:Fillrect( {100, 10, 200, 200 }, oBrush1, "-2")



Retorna a largura dos caracteres de uma determinada fonte

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


FWMsPrinter(): GetTextWidth ( < cTexto>, < oFont> GetFontWidths ( [ oFont], [ @aFontSize] ) --> nWidthaRet



 

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

 

Objeto do tipo fonte

aFontSizeArray of RecordVetor passado por referencia que recebera a lista de largura da fonte selecionada
X


aRet
    ()
  • Vetor passado por referencia que recebera a lista de largura da fonte selecionada
nWidth
    ()
  • Retorna a largura do texto.

null
oFont1 := TFont():New( 'Courier New', , -18, .T.)nWidht := oPrinter:GetTextWidth( "Teste", oFont1)

 


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

Quando o tipo de impressão for PDF, retorna se o arquivo será exibido após a impressão.


FWMsPrinter(): GetViewPDF GetOrientation ( ) --> lViewPDFnOrientation

nOrientationlViewPDF
    (logico)
  • .T. para exibir o relatório após a impressãoRetorna orientação do relatório. Para mais informações sobre os retornos que podem ser apresentados, consulte a área Observações.

Tabela com os valores de retorno.

  • 0 - Ainda não definido pelo usuário;
  • 1 - Portrait(retrato);
  • 2 - Landscape(paisagem)
Este método estará disponível em pacote de lib, no qual o fonte FWMSPrinter.PRW tenha a data superior ou igual a 08/09/2011.

oPrinter:GetViewPDFGetOrientation()
 



Retorna

se a impressora está ativa

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


FWMsPrinter(): IsPrinterActive GetTextHeight ( < cTexto>, < oFont> ) --> nHeight


oPrinter:IsPrinterActive()

 

Insere uma linha no relatório.

FWMsPrinter(): Line ( < nTop>, < nLeft>, < nBottom>, < nRight>, [ nColor], [ cPixel] ) -->

 

NomeTipoDescriçãoObrigatórioReferência
nTopNuméricoIndica a coordenada vertical em pixels.X 
nLeftNuméricoIndica a coordenada horizontal em pixels.X 
nBottomNuméricoIndica a posição do objeto ao rodapé.X 
nRightNuméricoIndica a posição do objeto à direita.X 
nColorNuméricoCor da linha. Default é 0  
cPixelCaracterExpessura da linha em pixels. Default é "-2"  

 

oPrinter:Line( 130, 10, 130, 900, "-4")

 

Retorna a resolução horizontal da impressora configurada.

FWMsPrinter(): nHorzRes ( ) --> nResult

nResult
    ()
  • Retorna a resolução horizontal da impressora configurada.
oPrinter:nHorzRes()

 


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 e realizar o cálculo.X


nHeight
    ()
  • Retorna a altura do texto.


oFont1 := TFont():New( 'Courier New', , -18, .T.)nHeight := oPrinter:GetTextheight( "Teste", oFont1)



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


FWMsPrinter(): GetTextWidth ( < cTexto> , < oFont> , <nType> ) --> nWidth



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 e realizar o cálculo.X
nTypeNuméricoInforma o tipo de cálculo [1=GetFontPixWidths | 2=CalcFieldSize | 0=Default]


nWidth
    ()
  • Retorna a largura do texto.

O cálculo da largura do texto é feito com base no S.O., portanto diferentes SO's podem resultar em diferentes retornos, recomendamos efetuar testes com o parâmetro nType para verificar qual adequa-se melhor ao S.O. e sua implementação.

oFont1 := TFont():New( 'Courier New', , -18, .T.)nWidht := oPrinter:GetTextWidth( "Teste", oFont1,0)



Quando o tipo de impressão for PDF, retorna se o arquivo será exibido após a impressão

Retorno largura da página

.


FWMsPrinter(): nHorzSize GetViewPDF ( ) --> nHorzSizelViewPDF

lViewPDFnHorzSize
    (logico)
  • Largura da página
null
oPrinter:nHorzSize()

 

  • .T. para exibir o relatório após a impressão.

Este método estará disponível em pacote de lib, no qual o fonte FWMSPrinter.PRW tenha a data superior ou igual a 08/09/2011.

oPrinter:GetViewPDF()



Retorna se a impressora está ativa

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

.


FWMsPrinter(): nLogPixelX IsPrinterActive ( ) --> nResult

nResult

()

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


  • oPrinter:nLogPixelXIsPrinterActive()

     



    Insere uma linha no relatório

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

    .


    FWMsPrinter(): nLogPixelY ( ) --> nResult

    nResult
      ()
    • Retorna a resolução horizontal em pixels da impressora configurada.
    oPrinter:nLogPixelY()

     

    Retorna a resolução vertical da impressora configurada.

    FWMsPrinter(): nVertRes ( ) --> nResult

    nResult
      ()
    • Retorna a resolução vertical da impressora configurada.
    oPrinter:nVertRes()

     

    Line ( < nTop>, < nLeft>, < nBottom>, < nRight>, [ nColor], [ cPixel] ) -->



    NomeTipoDescriçãoObrigatórioReferência
    nTopNuméricoIndica a coordenada vertical em pixels.X
    nLeftNuméricoIndica a coordenada horizontal em pixels.X
    nBottomNuméricoIndica a posição do objeto ao rodapé.X
    nRightNuméricoIndica a posição do objeto à direita.X
    nColorNuméricoCor da linha. Default é 0

    cPixelCaracterExpessura da linha em pixels. Default é "-2"

    Retorno altura da página.

    FWMsPrinter(): nVertSize ( ) --> nVertSize

    nVertSize()Altura da página.





    oPrinter:nVertSize()

     

    Line( 130, 10, 130, 900, "-4")



    Retorna a resolução horizontal da impressora configurada

    Retorna o tamanho do papel

    .


    FWMsPrinter(): PaperSize nHorzRes ( ) --> nPaperSizenResult

    nResultnPaperSize
      ()
    • Tamanho do papelRetorna a resolução horizontal da impressora configurada.

    null

    oPrinter:PaperSizenHorzRes()

     



    Retorno largura da página

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

    .


    FWMsPrinter(): Preview nHorzSize ( ) --> nHorzSize

    nHorzSize
      ()
    • Largura da página

    null

    oPrinter:PreviewnHorzSize()

     



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

    Envia o relatório para impressora

    .


    FWMsPrinter(): Print nLogPixelX ( ) --> nResult

    nResult
      oPrinter:Print
        ()

       

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


    oPrinter:nLogPixelX()



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


    FWMsPrinter(): PrinterName nLogPixelY ( ) --> cImpressoranResult

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

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

    oPrinter:PrinterNamenLogPixelY()

     



    Retorna a resolução vertical da impressora configurada.


    Imprime codigo de barra no padrão QRCode

    FWMsPrinter(): QRCode ( < nRow>, < nCol>, < cCodeBar>, < nSizeBar> nVertRes ( ) --> nResult

    nResult 
      NomeTipoDescriçãoObrigatórioReferência
      nRowNuméricoPosição relativa ao topoX 
      nColNuméricoPosição relativa à esquerdaX 
      cCodeBarCaracterTexto a ser codificadoX 
      nSizeBarNuméricoTamanho do codigo de barrasX 

       

     Esta opção esta disponivel para TotvsPrinter.exe em versões superiores à 1.3.0.  Para confirmação da versão utilize na linha de comando:totvsprinter -v.

    O código de barras será gerado com seu tamanho natural, que pode variar de acordo com a quantidade de caracteres codificados.
    No entanto, é importante ressaltar que a imagem do código de barras não pode ser redimensionada para um tamanho inferior ao natural, porque pode ficar corrompida, comprometendo a sua leitura. Sendo assim, é possível apenas passar um tamanho superior, para que a imagem seja escalada corretamente.

    Os códigos de barras 2D possuem os seguintes limites da quantidade de caracteres:
    • Data Matrix: No máximo 1200 caracteres;
    • QR Code: Aproximadamente 2930 caracteres.

    #Include "PROTHEUS.CH"#Include "RPTDEF.CH" #INCLUDE "TBICONN.CH"User Function QRCode()Local oPrinter   PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01"oPrinter      := FWMSPrinter():New('teste',6,.F.,,.T.,,,,,.F.)oPrinter:Setup()oPrinter:setDevice(IMP_PDF)oPrinter:cPathPDF :="C:\"oPrinter:Say(40,0,"Teste para QRCode")oPrinter:QRCode(0,150,"QR Code gerado com sucesso", 100)       oPrinter:EndPage()oPrinter:Preview()                                                                   FreeObj(oPrinter)oPrinter := NilRESET ENVIRONMENTReturn

    Insere um texto no relatório.

    FWMsPrinter(): Say ( < nRow>, < nCol>, < cText>, [ oFont], [ nWidth], [ nClrText], [ nAngle] ) -->

     

    NomeTipoDescriçãoObrigatórioReferência
    nRowNuméricoIndica a coordenada vertical em pixels ou caracteres.X 
    nColNuméricoIndica a coordenada horizontal em pixels ou caracteres.X 
    cTextCaracterTexto a ser impresso.X 
    oFontObjetoIndica o objeto do tipo TFont utilizado para definir as características da fonte aplicada na exibição do conteúdo do controle visual.  
    nWidthNuloIndica a largura em pixels do objeto.  
    nClrTextNuméricoIndica a cor do texto do objeto.  
    nAngleNuméricoÂngulo de rotação do texto.  

     

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

    oFont1 := TFont():New( "Courier New", , -18, .T.)oPrinter:Say( 10, 10, "texto para visualização", oFont1, 1400, CLR_HRED)

     

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


    oPrinter:nVertRes()



    Retorno altura da página.


    FWMsPrinter(): nVertSize ( ) --> nVertSize

    nVertSize
      ()
    • Altura da página.


    oPrinter:nVertSize()



    Retorna o tamanho do papel.


    FWMsPrinter(): PaperSize ( ) --> nPaperSize

    nPaperSize
      ()
    • Tamanho do papel.

    null

    oPrinter:PaperSize()



    Envia o relatório para impressora.


    FWMsPrinter(): Preview ( ) -->



    oPrinter:Preview()



    Envia o relatório para impressora.


    FWMsPrinter(): Print ( ) -->



    oPrinter:Print()



    Retorna o nome da impressora.


    FWMsPrinter(): PrinterName ( ) --> cImpressora

    cImpressora
      (caracter)
    • Nome da impressora.

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


    oPrinter:PrinterName()



    Imprime codigo de barra no padrão QRCode


    FWMsPrinter(): QRCode ( < nRow>, < nCol>, < cCodeBar>, < nSizeBar> ) -->



    NomeTipoDescriçãoObrigatórioReferência
    nRowNuméricoPosição relativa ao topoX
    nColNuméricoPosição relativa à esquerdaX
    cCodeBarCaracterTexto a ser codificadoX
    nSizeBarNuméricoTamanho do codigo de barrasX



     Esta opção esta disponível para TotvsPrinter.exe em versões superiores à 1.3.0.  Para confirmação da versão utilize na linha de comando:totvsprinter -v.

     O código é gerado com suas dimensões naturais (que são os valores mínimos sugeridos pelo motor de geração de código de barras 2D), que irão variar de acordo com a quantidade de caracteres codificados.

    No entanto, é importante ressaltar que até a versão 1.7.1 do agente TOTVSPrinter a imagem do código de barras não podia ser redimensionada para dimensões inferiores ao natural, porque poderia ficar corrompida, comprometendo a sua leitura. Sendo assim, era possível apenas passar um tamanho superior para que a imagem fosse escalada corretamente. Entretanto, a partir da versão 1.7.2 essa limitação foi removida, permitindo assim que as dimensões da imagem gerada possam ser escaladas para um tamanho inferior ao natural para que seja possível adequar-se a um espaço limitado e fixo, por exemplo. Assim, ao usar esse recurso, é preciso certificar-se de que, após o redimensionamento, um leitor ainda consegue interpretar corretamente as informações codificadas.

    Os códigos de barras 2D possuem os seguintes limites da quantidade de caracteres:

    • Data Matrix: No máximo 1200 caracteres
    • QR Code: Aproximadamente 2930 caracteres



    Bloco de código
    languagetext
    linenumberstrue
    #Include "PROTHEUS.CH"
    #Include "RPTDEF.CH"
    #INCLUDE "TBICONN.CH"
    
    User Function QRCode()
    
    Local oPrinter
    
    PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01"
    
    oPrinter := FWMSPrinter():New('teste',6,.F.,,.T.,,,,,.F.)
    oPrinter:Setup()
    oPrinter:setDevice(IMP_PDF)
    oPrinter:cPathPDF :="C:\"
    
    oPrinter:QRCode(150,150,"QR Code gerado com sucesso", 100)
    
    oPrinter:EndPage()
    oPrinter:Preview()
    FreeObj(oPrinter)
    oPrinter := Nil
    
    RESET ENVIRONMENT
    
    Return
    
    




    Insere um texto no relatório.


    FWMsPrinter(): Say

    Cria um objeto do tipo texto, permitindo alinhamento Horizontal e Vertical.

    FWMsPrinter(): SayAlign ( < nRow>, < nCol>, < cText>, [ oFont], [ nWidth], [ nHeigth], [ nClrText], [ nAlignHorznAngle] , [ nAlignVert ] ) -->


     


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

    nColNuméricoIndica a coordenada horizontal em pixels ou caracteres.X
     

    cTextCaracter
    Indica o texto que será
    Texto a ser impresso.X
     

    oFontObjetoIndica 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
    NuloIndica a largura em pixels do objeto.
      nHeigth


    nClrTextNuméricoIndica a
    altura em pixels
    cor do texto do objeto.
     


    nAngle
     nClrTextNuméricoIndica a cor do texto do objeto.  nAlignHorzNuméricoAlinhamento Horizontal. Para mais informações sobre os alinhamentos disponíveis, consulte a área Observações.  nAlignVertNuméricoAlinhamento Vertical. Para mais informações sobre os alinhamentos disponíveis, consulte a área Observações.  

     

    Tabela de códigos de alinhamento horizontal.

    • 0 - Alinhamento à esquerda;
    • 1 - Alinhamento à direita;
    • 2 - Alinhamento centralizado
    • 3 - Alinhamento justificado. (Opção disponível somente a partir da versão 1.6.2 da TOTVS Printer.)

     

    Tabela de códigos de alinhamento vertical.

    • 0 - Alinhamento centralizado;
    • 1 - Alinhamento superior;
    • 2 - Alinhamento inferior
    oFont1 := TFont():New('Courier new',,-18,.T.)oPrinter:SayAlign( 10,10,"Texto para visualização",oFont1,1400, 200, CLR_HRED, 0, 2 )

     

    NuméricoÂngulo de rotação do texto.



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


    oFont1 := TFont():New( "Courier New", , -18, .T.)oPrinter:Say( 10, 10, "texto para visualização", oFont1, 1400, CLR_HRED)



    Cria um objeto do tipo texto, permitindo alinhamento Horizontal e Vertical.


    FWMsPrinter(): SayAlign ( < nRow>, < nCol>, < cText>, [ oFont], [ nWidth], [ nHeigth], [ nClrText], [ nAlignHorz], [ nAlignVert ] ) -->



    Insere uma imagem no relatório.

    FWMsPrinter(): SayBitmap ( < nRow>, < nCol>, < cBitmap>, [ nWidth], [ nHeight] ) -->

     

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

    nColNuméricoIndica a coordenada horizontal em pixels ou caracteres.X
     cBitmap

    cTextCaracterIndica o
    diretório e o nome, com extensão BMP (Bitmap), da imagem
    texto que será impresso.X
     Numérico

    oFont
    nWidth
    ObjetoIndica
    a largura em pixels do objeto. Default é 100.  nHeight
    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.

    nHeigthNuméricoIndica a altura em pixels do objeto
    . Default é 100
    .
     


    nClrText
     

     

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

    A impressão de imagens maiores que 1MB e a possibilidade de utilizar arquivos locais ou compartilhados via rede estarão disponiveis à partir da totvsPrinter versão 1.5.5.

    Se o relatório for executado via SERVIDOR, essa máquina deverá ter acesso aos arquivos, caso as imagens estejam no drive local da estação onde serão executadas.

    oPrinter:SayBitmap( 100, 200, "C:\Dir\totvs.bmp", 800, 800)
    oPrinter:SayBitMap( 100, 200, "\\maquina\public\totvs.bmp", 2000, 2000) // Acesso a arquivos via rede.

     



    nAlignHorzNuméricoAlinhamento Horizontal. Para mais informações sobre os alinhamentos disponíveis, consulte a área Observações.

    nAlignVertNuméricoAlinhamento Vertical. Para mais informações sobre os alinhamentos disponíveis, consulte a área Observações.



    Tabela de códigos de alinhamento horizontal.

    • 0 - Alinhamento à esquerda;
    • 1 - Alinhamento à direita;
    • 2 - Alinhamento centralizado
    • 3 - Alinhamento justificado. (Opção disponível somente a partir da versão 1.6.2 da TOTVS Printer.)


    Tabela de códigos de alinhamento vertical.

    • 0 - Alinhamento centralizado;
    • 1 - Alinhamento superior;
    • 2 - Alinhamento inferior

    oFont1 := TFont():New('Courier new',,-18,.T.)oPrinter:SayAlign( 10,10,"Texto para visualização",oFont1,1400, 200, CLR_HRED, 0, 2 )



    Insere uma imagem no relatório.

    Seleciona o dispositivo de impressao


    FWMsPrinter(): SetDevice ( < nDevice> SayBitmap ( < nRow>, < nCol>, < cBitmap>, [ nWidth], [ nHeight] ) -->



     

    NomeTipoDescriçãoObrigatórioReferência
    nDevice
    nRowNumérico
    Tipos de Saída aceitos: IMP_SPOOL Envia para impressora. IMP_PDF Gera arquivo PDF à partir do relatório. Default é IMP_SPOOL
    Indica a coordenada vertical em pixels ou caracteres.X
     

    nCol

     

    null
    oPrint:SetDevice(IMP_SPOOL)

     

    Define o fonte a ser utilizado no relatório.

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

     

    NomeTipoDescriçãoObrigatórioReferência
    oFontObjetoObjeto do tipo TFont.X 

     

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

     

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

    FWMsPrinter(): SetLandscape ( ) -->

    oPrinter:SetLandscape()

     

    NuméricoIndica a coordenada horizontal em pixels ou caracteres.X
    cBitmapCaracterIndica o diretório e o nome, com extensão BMP (Bitmap), da imagem.X
    nWidthNuméricoIndica a largura em pixels do objeto. Default é 100.

    nHeightNuméricoIndica a altura em pixels do objeto. Default é 100.



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

    A impressão de imagens maiores que 1MB e a possibilidade de utilizar arquivos locais ou compartilhados via rede estarão disponiveis à partir da totvsPrinter versão 1.5.5.

    Se o relatório for executado via SERVIDOR, essa máquina deverá ter acesso aos arquivos, caso as imagens estejam no drive local da estação onde serão executadas.

    oPrinter:SayBitmap( 100, 200, "C:\Dir\totvs.bmp", 800, 800)
    oPrinter:SayBitMap( 100, 200, "\\maquina\public\totvs.bmp", 2000, 2000) // Acesso a arquivos via rede.



    Seleciona o dispositivo de impressao


    FWMsPrinter(): SetDevice ( < nDevice>

    Define a margem do relatório.

    FWMsPrinter(): SetMargin ( < nLeft>, < nTop>, < nRight>, < nBottom> ) -->



     

    NomeTipoDescriçãoObrigatórioReferência
    nLeft
    nDeviceNumérico
    Margem esquerda
    Tipos de Saída aceitos: IMP_SPOOL Envia para impressora. IMP_PDF Gera arquivo PDF à partir do relatório. Default é IMP_SPOOLX
     



    nTopnullNuméricoMargem superiorX nRightNuméricoMargem direitaX nBottomNuméricoMargem inferiorX 

     

    null
    oPrinter:SetMargin(10,10,10,10)

     

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

    FWMsPrinter(): SetPaperSize ( < nPaperSize>, [ nHeight], [ nWidth] ) -->

     

    NomeTipoDescriçãoObrigatórioReferência
    nPaperSizeNuméricoIndica o tamanho que será utilizado no papel. Para mais informações dos tipos de tamanho disponíveis, consulte a área Observações.X 
    nHeightNuméricoAltura da página.  
    nWidthNuméricoLargura da página.  

     

    • 0 - Tamanho customizavel pelo usuario, informado em nHeight/nWidth. Aplicavel apenas em impressoes do tipo PDF.
    • 1 - Letter   216mm x 279mm  637 x 823
    • 3 - Tabloid  279mm x 432mm  823 x 1275
    • 7 - Executive 184mm x 267mm  543 x 788
    • 8 - A3     297mm x 420mm  876 x 1240
    • 9 - A4     210mm x 297mm  620 x 876
    oPrinter:setPaperSize(9)

     

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

    FWMsPrinter(): SetPortrait ( ) -->

    oPrinter:SetPortrait()

     

    Define resolução do relatório.

    FWMsPrinter(): SetResolution ( [ nResolution] ) -->

     

    NomeTipoDescriçãoObrigatórioReferência
    nResolutionNuméricoResolução do relatório. Default é 72  

     

    Atualmente a versão da Totvsprinter somente trabalha com o valor fixo de 72. Portanto não deve setar outro valor.
    oPrinter:Resolution()

     

    Apresenta a janela de configuração de impressoras.

    FWMsPrinter(): Setup ( ) -->

    oPrinter:Setup()

     

    Quando o tipo de impressão for PDF, define se o arquivo será exibido após a impressão.

    FWMsPrinter(): SetViewPDF ( < lViewPDF> ) -->

     

    NomeTipoDescriçãoObrigatórioReferência
    lViewPDFLógico.T. para exibir o PDF após a impressão.X 

     

    Este método estará disponível em pacote de lib, no qual o fonte FWMSPrinter.PRW tenha a data superior ou igual a 08/09/2011.
    // para não apresentar o PDF após a geração do relatório.oPrinter:SetViewPDF(.F.)

     

     

    Imprime codigo de barra no padrão Pdf417

    FWMsPrinter(): pdf417( nRow, nCol, cCodeBar, nSizeBar,nHeight ) -->

     

    Nome
    Tipo
    Descrição
    Obrigatório
    Referencia
    nRowNuméricoPosição relativa ao topox 
    nColNuméricoPosição relativa à esquerdax 
    cCodBarCaracterTexto a ser codificadox 
    nSizeBarNuméricoTamanho do codigo de barrasx 
    nHeightNuméricoAltura da Barrax 

     

    oPrinter:pdf417( nRow, nCol, cCodeBar, nSizeBar,nHeight )

     

    Inicia a impressão de uma nova página

    FWMsPrinter(): StartPage ( ) -->

    oPrinter:StartPage()

     

     

    ...


    oPrint:SetDevice(IMP_SPOOL)



    Define o fonte a ser utilizado no relatório.


    FWMsPrinter(): SetFont ( < oFont>, < lForceFont> ) -->



    NomeTipoDescriçãoObrigatórioReferência
    oFontObjetoObjeto do tipo TFont.X
    lForceFontLógico

    Se .T. atualiza a fonte do texto do relatório setada no TFont





    Caso seja utilizado o método StartPage em seu relatório, o parâmetro lForceFont não é necessário.

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



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


    FWMsPrinter(): SetLandscape ( ) -->



    oPrinter:SetLandscape()



    Define a margem do relatório.


    FWMsPrinter(): SetMargin ( < nLeft>, < nTop>, < nRight>, < nBottom> ) -->



    NomeTipoDescriçãoObrigatórioReferência
    nLeftNuméricoMargem esquerdaX
    nTopNuméricoMargem superiorX
    nRightNuméricoMargem direitaX
    nBottomNuméricoMargem inferiorX



    null

    oPrinter:SetMargin(10,10,10,10)



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


    FWMsPrinter(): SetPaperSize ( < nPaperSize>, [ nHeight], [ nWidth] ) -->



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

    nWidthNuméricoLargura da página.



    • 0 - Tamanho customizavel pelo usuario, informado em nHeight/nWidth. Aplicavel apenas em impressoes do tipo PDF.
    • 1 - Letter   216mm x 279mm  637 x 823
    • 3 - Tabloid  279mm x 432mm  823 x 1275
    • 7 - Executive 184mm x 267mm  543 x 788
    • 8 - A3     297mm x 420mm  876 x 1240
    • 9 - A4     210mm x 297mm  620 x 876

    oPrinter:setPaperSize(9)



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


    FWMsPrinter(): SetPortrait ( ) -->



    oPrinter:SetPortrait()



    Define resolução do relatório.


    FWMsPrinter(): SetResolution ( [ nResolution] ) -->



    NomeTipoDescriçãoObrigatórioReferência
    nResolutionNuméricoResolução do relatório. Default é 72



    Atualmente a versão da Totvsprinter somente trabalha com o valor fixo de 72. Portanto não deve setar outro valor.

    oPrinter:Resolution()



    Apresenta a janela de configuração de impressoras.


    FWMsPrinter(): Setup ( ) -->



    oPrinter:Setup()



    Quando o tipo de impressão for PDF, define se o arquivo será exibido após a impressão.


    FWMsPrinter(): SetViewPDF ( < lViewPDF> ) -->



    NomeTipoDescriçãoObrigatórioReferência
    lViewPDFLógico.T. para exibir o PDF após a impressão.X



    Este método estará disponível em pacote de lib, no qual o fonte FWMSPrinter.PRW tenha a data superior ou igual a 08/09/2011.

    // para não apresentar o PDF após a geração do relatório.oPrinter:SetViewPDF(.F.)



    Imprime codigo de barra no padrão Pdf417


    FWMsPrinter(): pdf417( nRow, nCol, cCodeBar, nSizeBar,nHeight ) -->



    Nome
    Tipo
    Descrição
    Obrigatório
    Referencia
    nRowNuméricoPosição relativa ao topox
    nColNuméricoPosição relativa à esquerdax
    cCodBarCaracterTexto a ser codificadox
    nSizeBarNuméricoTamanho do codigo de barrasx
    nHeightNuméricoAltura da Barrax



    oPrinter:pdf417( nRow, nCol, cCodeBar, nSizeBar,nHeight )



    SetPassword

    Informa uma senha para a geração e visualização do PDF

    Sintaxe

    FWMsPrinter(): SetPassword( < cPassword > )


    Parâmetros
    NomeTipoDescriçãoObrigatórioReferência
    cPasswordCharacterSenha para a geração e visualização do PDFx


    Observações

    A senha funciona apenas para a geração de PDF (IMP_PDF), qualquer outro formato não acatará a senha, como SPOOL ou outros. Esse método está disponível na lib 20230807 ou superior.

    Exemplos

    oPrinter:SetPassword("Daniel")


    GetStatusPrinter

    Retorna o status da geração do PDF que a printer gerou

    Sintaxe

    FWMsPrinter(): GetStatusPrinter() → nStatusPrinter


    Retorno

    nStatusPrinter - numeric - Status da geração do PDF retornado pelo binário da printer


    Observações

    Esse status não deve ser utilizado para validar a geração bem sucedida do PDF. Esse método está disponível na lib 20231009 ou superior.

    Exemplos

    oPrinter:GetStatusPrinter()




    Inicia a impressão de uma nova página


    FWMsPrinter(): StartPage ( ) -->



    oPrinter:StartPage()



    PropriedadeDescriçãoTipo
    aImagesLista de imagens do relatório.Vetor
    cFileNameNome do arquivo a ser gerado.Caracter
    cFilePrintArquivo que conterá o binário do relatório.Caracter
    cPathPDFPath do arquivo PDF.Caracter
    cPathPrintNome do diretório onde o relatório será gerado.Caracter
    cPrinterNome da impressora para impressão do relatório.Caracter
    cSessionInformações de configuração da impressora.Caracter
    IsFirstPageDetermina se é a primeira página do relatório.Array of Record
    lCanceledDefine se o relatório foi cancelado.Lógico
    lInJobDetermina se o relatório está sendo executado via Job.Lógico
    lServerIndica impressão via Server (.REL Não será copiado para o Client).Lógico
    lTReportIndica que o relatório foi chamado pelo TReport.Lógico
    lViewPDFIndica se o arquivo será exibido após a impressão em PDF.Lógico
    nDeviceDispositivo de impressão.Numérico
    nModalResultRetorna o ModalResult do Setup, para que o usuário trate a informaçãoNumérico
    nPageCountQuantidade de páginas do relatório.Numérico
    nPageHeightAltura da página.Numérico
    nPageWidthLargura da página.Numérico
    nPaperSizeTamanho da folha do relatório.Numérico
    oFontAtuFonte do relatório.Objeto
    oPrintObjeto de impressão.Objeto
    Informações

    A opção do tipo de impressão não é salva pela última escolha feita. Caso exista a necessidade desse comportamento deve-se realizar a implementação diretamente no programa que se utiliza da classe gravando, recuperando e informando qual o tipo.

    Image Added


    Uma opção desse tipo de controle pode ser vista abaixo (FWProfile)

    Bloco de código
    Function u_localPrint()
        Local lAdjustToLegacy   := .F.
        Local lDisableSetup     := .T.
        Local oPrinter
        Local cLocal            := "c:\temp"
        Local nPrtType          := 6 // IMP_PDF > 6 || IMP_SPOOL > 2
        Local aDevice           := {}
        Local cSession          := GetPrinterSession()
    
        AADD(aDevice,"DISCO") // 1
        AADD(aDevice,"SPOOL") // 2
        AADD(aDevice,"EMAIL") // 3
        AADD(aDevice,"EXCEL") // 4
        AADD(aDevice,"HTML" ) // 5
        AADD(aDevice,"PDF"  ) // 6
        
        oProfile    := FWProfile():New()
        oProfile:SetTask('PRINTTYPE')    
        cDevice := oProfile:LoadStrProfile()
        
        nPrtType := aScan(aDevice,{|x| x == cDevice })
    
        oPrinter := FWMSPrinter():New("exemplo", nPrtType, lAdjustToLegacy, cLocal, lDisableSetup, , , , , , .F., )
        oPrinter:Say(10, 0, "teste")
        oPrinter:Setup()
    
        If oPrinter:nModalResult == PD_OK
            oProfile:SetTask('PRINTTYPE')    
            oProfile:SetStringProfile(If(oPrinter:nDevice==2, "SPOOL", "PDF"))
            oProfile:Save()
            oPrinter:Preview()
        EndIf
    Return





    Informações

    Comportamento de opções de impressão em relação aos acessos dos usuários

    No cadastro de usuários existem 4 acessos que podem influenciar nas opções de impressão da classe FwMsPrinter:

    • 111 - Gerar Rel. em Disco Local
    • 112 - Gerar Rel. no Servidor
    • 121 - Usa Impressora no Server
    • 122 - Usa Impressora no Client

    Esses acessos devem estar de acordo com a parametrização das configurações de diretório e impressão:

    Image Added

    Opções disponíveis na FwMsPrinter:

    Image Added

    Image Added

    Os comportamentos esperados de acordo com os acessos dados aos usuários são:

    111

    Gerar Rel. em Disco Local

    112

    Gerar Rel. no Servidor

    121

    Usa Impressora no Server

    122

    Usa Impressora no Client

    DESTINO

    TIPO DE IMPRESSÃO




    Sem permissão para imprimirX
    XXXXLocal | ServidorSpool Server/Client | PDF
    X


    LocalPDF

    X

    ServidorPDF
    X

    XLocalSpool Client | PDF

    XX
    ServidorSpool Server | PDF
    XX
    XLocal | ServidorSpool Client | PDF
    XXX
    Local | ServidorSpool Server | PDF
    Informações
    titleImportante

    Para impressões em que o usuário seleciona a opção de destino "Servidor", é importante ressaltar que apenas o arquivo intermediário é gerado no servidor (arquivo .rel) e desta forma a conversão final deste arquivo em pdf ocorre por meio do recurso printer.exe localizado na pasta do smartclient em execução pelo usuário.

    Apenas em situações em que o componente esta rodando sem interface grafica (Exemplo: rotinas executadas via job), a conversão final do arquivo .rel em pdf ocorrerá por meio do recurso printer.exe localizada na pasta do AppServer em execução.

    Dica

    Caso exista a necessidade de realizar a impressão de um relatório via JOB utilizando a impressão via Spool informe a impressora diretamente para ser considerada na impressão.

    Bloco de código
        lAdjustToLegacy := .F.
        lDisableSetup   := .T.
        cLocal          := "\spool"
        
    	oPrinter := FwMsPrinter():New("exemplo.rel", IMP_SPOOL, lAdjustToLegacy, cLocal, lDisableSetup, , , , , , .F., )
    
        oPrinter:StartPage()
        oPrinter:Say( 20, 30, "Linha Teste")
        oPrinter:EndPage()
    
        oPrinter:lServer := .T.
    
        oPrinter:cPrinter := "\\printserver-02.sp01.local\SPCloudPrinter-Mono" // Endereço da impressora que será utilizada
    
        oPrinter:Preview()

    ...