Usina BRAdvPL Guia
Entrar
← Todos os tópicos
CLASSEPublicado

FWMsPrinter

FWMsPrinter():New( <cFilePrinter>, [nDevice], [lAdjustToLegacy], [cPathInServer], [lDisableSetup], ... )

Cria um objeto para geração, visualização e impressão de relatórios gráficos em AdvPL.

RelatóriosImpressãoPDFFrameworkFWMsPrinter
01 · VISÃO GERAL

Visão geral

FWMsPrinter é a classe de impressão do framework usada para montar relatórios gráficos, gerar arquivos PDF ou enviar o resultado para spool/impressora. Ela substitui o uso direto da TMSPrinter em novos desenvolvimentos e preserva opções de compatibilidade para relatórios legados. O fluxo mais comum é criar o objeto, configurar resolução, orientação, papel e margens, iniciar a página, desenhar textos, linhas, caixas ou imagens, finalizar a página e então visualizar, imprimir ou gerar o arquivo.

02 · SINTAXE

Sintaxe

FWMsPrinter():New( <cFilePrinter>, [nDevice], [lAdjustToLegacy], [cPathInServer], [lDisableSetup], ... )

Parâmetros

cFilePrinter
CaractereObrigatório

Nome do arquivo de relatório a ser criado. Evite caracteres especiais no nome para reduzir problemas na geração e no uso do arquivo.

nDevice
NuméricoOpcional

Tipo de saída. IMP_SPOOL envia para impressora/spool; IMP_PDF gera arquivo PDF a partir do relatório.

Padrão: IMP_SPOOL
lAdjustToLegacy
LógicoOpcional

Quando verdadeiro, recalcula coordenadas para compatibilidade com proporções legadas da TMSPrinter. Para relatórios novos, normalmente se usa .F.

Padrão: .T.
cPathInServer
CaractereOpcional

Diretório no servidor onde o arquivo de relatório será salvo.

lDisableSetup
LógicoOpcional

Quando .T., não exibe a tela de setup; o programa passa a ser responsável por definir destino e configurações.

Padrão: .F.
oPrintSetup
ObjetoOpcional

Objeto FWPrintSetup informado pelo usuário, quando a rotina precisa controlar configurações de impressão.

cPrinter
CaractereOpcional

Nome da impressora de destino. É relevante quando a tela de setup é desabilitada e a impressão deve seguir para um dispositivo específico.

lServer
LógicoOpcional

Indica impressão via servidor, sem copiar o arquivo .REL para o cliente.

Padrão: .F.
lRaw
LógicoOpcional

Indica impressão RAW/PCL, útil para cenários específicos de impressoras compatíveis.

lViewPDF
LógicoOpcional

Quando a saída é PDF, define se o arquivo será exibido após a geração.

Padrão: .T.
nQtdCopy
NuméricoOpcional

Quantidade de cópias para impressão por spool, especialmente útil em jobs ou schedules sem intervenção do usuário.

lPDFAsPNG
LógicoOpcional

Parâmetro relacionado à geração/tratamento do PDF como imagem, conforme disponibilidade da LIB e do TotvsPrinter utilizados.

lConvertFont
LógicoOpcional

Indica se o tamanho da fonte será convertido. Quando .F., a conversão não é aplicada.

Padrão: .T.
lHasBuffer
LógicoOpcional

Disponibilizado a partir da LIB 20240520 para indicar se o buffer de arquivo deve ser usado.

Padrão: .T.

Métodos

NewMétodo construtor da classe. Use para criar o objeto de impressão antes de configurar página, destino e conteúdo.FWMsPrinter():New( <cFilePrinter>, [nDevice], [lAdjustToLegacy], [cPathInServer], [lDisableSetup], [lTReport], [@oPrintSetup], [cPrinter], [lServer], [lPDFAsPNG], [lRaw], [lViewPDF], [nQtdCopy], [lConvertFont], [lHasBuffer] ) --> oPrinter
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
cFilePrinterCaractereObrigatório

Nome do arquivo de relatório.

nDeviceNuméricoOpcional

Dispositivo de saída, como IMP_SPOOL ou IMP_PDF.

lAdjustToLegacyLógicoOpcional

Compatibiliza coordenadas com relatórios legados.

cPathInServerCaractereOpcional

Caminho no servidor para gravação do arquivo.

lDisableSetupLógicoOpcional

Quando verdadeiro, não exibe a tela de configuração.

lTReportLógicoOpcional

Indica uso integrado com TReport quando aplicável.

oPrintSetupObjetoOpcional

Objeto de configuração de impressão passado por referência.

cPrinterCaractereOpcional

Nome da impressora de destino.

lServerLógicoOpcional

Indica geração/impressão pelo servidor.

lPDFAsPNGLógicoOpcional

Controla tratamento do PDF como imagem quando suportado.

lRawLógicoOpcional

Indica uso de impressão RAW/PCL.

lViewPDFLógicoOpcional

Define se o PDF será exibido após a geração.

nQtdCopyNuméricoOpcional

Quantidade de cópias.

lConvertFontLógicoOpcional

Controla conversão de tamanho de fonte.

lHasBufferLógicoOpcional

Indica uso de buffer de arquivo nas LIBs que suportam o recurso.

Retorno

oPrinter: objeto FWMsPrinter criado.

SetParmAtiva parâmetros internos. O uso documentado de "-RFS" reduz divergências de tamanho de fonte entre PDF, preview e fila de impressão.FWMsPrinter():SetParm( "-RFS" ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
cParmCaractereObrigatório

Chave de parâmetro. Use "-RFS" para Real Font Sizes.

BoxInsere um retângulo no relatório. Use para molduras, áreas de destaque e separações visuais.FWMsPrinter():Box( <nRow>, <nCol>, <nBottom>, <nRight>, [cPixel] ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nRowNuméricoObrigatório

Coordenada vertical inicial.

nColNuméricoObrigatório

Coordenada horizontal inicial.

nBottomNuméricoObrigatório

Coordenada inferior do retângulo.

nRightNuméricoObrigatório

Coordenada direita do retângulo.

cPixelCaractereOpcional

Indica tratamento de coordenadas em pixels quando aplicável.

CancelDefine o cancelamento do relatório. Use quando o processamento precisar ser interrompido por decisão do usuário ou regra da rotina.FWMsPrinter():Cancel() -->
CanceledRetorna o estado de cancelamento do relatório. Use em loops longos para parar a geração com segurança.FWMsPrinter():Canceled() --> lRet
Retorno

lRet: .T. quando o relatório foi cancelado.

Cmtr2PixConverte medidas para pixels por referência. Use quando a rotina trabalha com centímetros e precisa desenhar em coordenadas de impressão.FWMsPrinter():Cmtr2Pix( [nLinha], [nCol] ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nLinhaNuméricoOpcional

Linha/posição vertical a converter.

nColNuméricoOpcional

Coluna/posição horizontal a converter.

EAN13Imprime código de barras no padrão EAN13. Conforme a documentação, é disponível apenas para impressão na posição horizontal e depende de LIB/TOTVS Printer compatíveis.FWMsPrinter():EAN13( <nRow>, <nCol>, <cCodeBar>, <nTotalWidth>, <nHeight> ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nRowNuméricoObrigatório

Posição relativa ao topo.

nColNuméricoObrigatório

Posição relativa à esquerda.

cCodeBarCaractereObrigatório

Texto a transformar em código de barras.

nTotalWidthNuméricoObrigatório

Largura total do código de barras.

nHeightNuméricoObrigatório

Altura da barra.

Code128Imprime código de barras no padrão Code128.FWMsPrinter():Code128( <nRow>, <nCol>, <cCodeBar>, <nWidth>, <nHeight>, [lSay], [oFont], [nTotalWidth] ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nRowNuméricoObrigatório

Posição vertical.

nColNuméricoObrigatório

Posição horizontal.

cCodeBarCaractereObrigatório

Conteúdo a codificar.

nWidthNuméricoObrigatório

Largura do código.

nHeightNuméricoObrigatório

Altura do código.

lSayLógicoOpcional

Indica se o texto deve ser exibido junto ao código.

oFontObjetoOpcional

Fonte usada no texto.

nTotalWidthNuméricoOpcional

Largura total desejada.

Code128CImprime código de barras no padrão Code128C, indicado para sequências numéricas compactas.FWMsPrinter():Code128C( <nRow>, <nCol>, <cCodeBar>, <nSizeBar> ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nRowNuméricoObrigatório

Posição vertical.

nColNuméricoObrigatório

Posição horizontal.

cCodeBarCaractereObrigatório

Conteúdo a codificar.

nSizeBarNuméricoObrigatório

Tamanho do código de barras.

FwMsBarImprime códigos de barras suportados pela MsBar, como EAN13, EAN8, UPCA, CODE128, INT25, IND25, CODABAR e CODE3_9.FWMsPrinter():FWMsBar( <cTypeBar>, <nRow>, <nCol>, <cCode>, <oPrint>, [lCheck], [nColor], [lHorz], [nWidth], [nHeight], [lBanner], [cFont], [cMode], [lPrint], [nPFWidth], [nPFHeight], [lCmtr2Pix] ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
cTypeBarCaractereObrigatório

Tipo do código de barras.

nRowNuméricoObrigatório

Posição vertical.

nColNuméricoObrigatório

Posição horizontal.

cCodeCaractereObrigatório

Texto a transformar em código de barras.

oPrintObjetoObrigatório

Objeto de impressão.

lCheckLógicoOpcional

Calcula dígito de controle.

nColorNuméricoOpcional

Cor do código de barras.

lHorzLógicoOpcional

Imprime na horizontal.

nWidthNuméricoOpcional

Largura da barra.

nHeightNuméricoOpcional

Altura da barra.

lBannerLógicoOpcional

Imprime o texto abaixo do código.

cFontCaractereOpcional

Fonte usada no texto.

cModeCaractereOpcional

Modo do código de barras.

lPrintLógicoOpcional

Executa Print() pelo MsBar.

nPFWidthNuméricoOpcional

Ajuste de largura da fonte.

nPFHeightNuméricoOpcional

Ajuste de altura da fonte.

lCmtr2PixLógicoOpcional

Usa Cmtr2Pix() para converter coordenadas.

DataMatrixImprime código bidimensional DataMatrix.FWMsPrinter():DataMatrix( <nCol>, <nRow>, <cCodeBar>, <nSizeBar> ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nColNuméricoObrigatório

Posição horizontal.

nRowNuméricoObrigatório

Posição vertical.

cCodeBarCaractereObrigatório

Conteúdo a codificar.

nSizeBarNuméricoObrigatório

Tamanho do código.

EllipseInsere uma elipse no relatório.FWMsPrinter():Ellipse( <nLeft>, <nTop>, <nBottom>, <nRight>, [nColorIn], [nColorOut], [nLineType], [cPixel] ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nLeftNuméricoObrigatório

Coordenada esquerda.

nTopNuméricoObrigatório

Coordenada superior.

nBottomNuméricoObrigatório

Coordenada inferior.

nRightNuméricoObrigatório

Coordenada direita.

nColorInNuméricoOpcional

Cor interna.

nColorOutNuméricoOpcional

Cor da borda.

nLineTypeNuméricoOpcional

Tipo de linha.

cPixelCaractereOpcional

Tratamento de coordenadas em pixels.

EndPageIndica o fim da página atual. Chame depois de desenhar todo o conteúdo da página.FWMsPrinter():EndPage() -->
FillRectCria um retângulo preenchido. Use para fundos, faixas e áreas de destaque.FWMsPrinter():FillRect( <aCoords>, [oBrush], [cPixel] ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
aCoordsArrayObrigatório

Coordenadas do retângulo.

oBrushObjetoOpcional

Objeto TBrush usado no preenchimento.

cPixelCaractereOpcional

Tratamento de coordenadas em pixels.

GetFontWidthsRetorna a largura dos caracteres de uma fonte. Útil para calcular alinhamentos e prever quebras.FWMsPrinter():GetFontWidths( [oFont], [@aFontSize] ) --> aRet
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
oFontObjetoOpcional

Fonte usada no cálculo.

aFontSizeArrayOpcional

Array passado por referência para receber informações de tamanho.

Retorno

aRet: vetor com larguras da fonte.

GetOrientationRetorna a orientação do relatório.FWMsPrinter():GetOrientation() --> nOrientation
Retorno

nOrientation: orientação atual, como retrato ou paisagem.

GetTextHeightRetorna a altura ocupada por um texto conforme a fonte.FWMsPrinter():GetTextHeight( <cTexto>, <oFont> ) --> nHeight
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
cTextoCaractereObrigatório

Texto a medir.

oFontObjetoObrigatório

Fonte usada no cálculo.

Retorno

nHeight: altura calculada.

GetTextWidthRetorna a largura ocupada por um texto conforme a fonte.FWMsPrinter():GetTextWidth( <cTexto>, <oFont>, <nType> ) --> nWidth
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
cTextoCaractereObrigatório

Texto a medir.

oFontObjetoObrigatório

Fonte usada no cálculo.

nTypeNuméricoObrigatório

Tipo de cálculo de largura.

Retorno

nWidth: largura calculada.

GetViewPDFRetorna se o PDF será exibido após a impressão.FWMsPrinter():GetViewPDF() --> lViewPDF
Retorno

lViewPDF: .T. para exibir o PDF.

IsPrinterActiveRetorna se a impressora está ativa/disponível para o relatório.FWMsPrinter():IsPrinterActive() -->
LineInsere uma linha no relatório.FWMsPrinter():Line( <nTop>, <nLeft>, <nBottom>, <nRight>, [nColor], [cPixel] ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nTopNuméricoObrigatório

Coordenada superior/inicial.

nLeftNuméricoObrigatório

Coordenada esquerda/inicial.

nBottomNuméricoObrigatório

Coordenada inferior/final.

nRightNuméricoObrigatório

Coordenada direita/final.

nColorNuméricoOpcional

Cor da linha.

cPixelCaractereOpcional

Tratamento de coordenadas em pixels.

nHorzResRetorna a resolução horizontal da impressora configurada.FWMsPrinter():nHorzRes() --> nResult
Retorno

nResult: resolução horizontal.

nHorzSizeRetorna a largura da página.FWMsPrinter():nHorzSize() --> nHorzSize
Retorno

nHorzSize: largura da página.

nLogPixelXRetorna a resolução horizontal em pixels lógicos da impressora configurada.FWMsPrinter():nLogPixelX() --> nResult
Retorno

nResult: pixels lógicos no eixo X.

nLogPixelYRetorna a resolução vertical em pixels lógicos da impressora configurada.FWMsPrinter():nLogPixelY() --> nResult
Retorno

nResult: pixels lógicos no eixo Y.

nVertResRetorna a resolução vertical da impressora configurada.FWMsPrinter():nVertRes() --> nResult
Retorno

nResult: resolução vertical.

nVertSizeRetorna a altura da página.FWMsPrinter():nVertSize() --> nVertSize
Retorno

nVertSize: altura da página.

PaperSizeRetorna o tamanho de papel configurado.FWMsPrinter():PaperSize() --> nPaperSize
Retorno

nPaperSize: código do tamanho do papel.

PreviewAbre a visualização do relatório gerado. Use após finalizar as páginas.FWMsPrinter():Preview() -->
PrintEnvia o relatório para a impressora ou destino configurado.FWMsPrinter():Print() -->
PrinterNameRetorna o nome da impressora configurada.FWMsPrinter():PrinterName() --> cImpressora
Retorno

cImpressora: nome da impressora.

QRCodeImprime QR Code no relatório.FWMsPrinter():QRCode( <nRow>, <nCol>, <cCodeBar>, <nSizeBar> ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nRowNuméricoObrigatório

Posição vertical.

nColNuméricoObrigatório

Posição horizontal.

cCodeBarCaractereObrigatório

Conteúdo a codificar.

nSizeBarNuméricoObrigatório

Tamanho do QR Code.

SayInsere texto no relatório. É o método base para escrever títulos, campos e mensagens.FWMsPrinter():Say( <nRow>, <nCol>, <cText>, [oFont], [nWidth], [nClrText], [nAngle] ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nRowNuméricoObrigatório

Posição vertical.

nColNuméricoObrigatório

Posição horizontal.

cTextCaractereObrigatório

Texto a imprimir.

oFontObjetoOpcional

Fonte utilizada.

nWidthNuméricoOpcional

Largura disponível para o texto.

nClrTextNuméricoOpcional

Cor do texto.

nAngleNuméricoOpcional

Ângulo de rotação.

SayAlignInsere texto com alinhamento horizontal e vertical dentro de uma área.FWMsPrinter():SayAlign( <nRow>, <nCol>, <cText>, [oFont], [nWidth], [nHeight], [nClrText], [nAlignHorz], [nAlignVert] ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nRowNuméricoObrigatório

Posição vertical.

nColNuméricoObrigatório

Posição horizontal.

cTextCaractereObrigatório

Texto a imprimir.

oFontObjetoOpcional

Fonte utilizada.

nWidthNuméricoOpcional

Largura da área.

nHeightNuméricoOpcional

Altura da área.

nClrTextNuméricoOpcional

Cor do texto.

nAlignHorzNuméricoOpcional

Alinhamento horizontal.

nAlignVertNuméricoOpcional

Alinhamento vertical.

SayBitmapInsere uma imagem no relatório. Valide formato, caminho e disponibilidade no servidor ou estação conforme o modo de execução.FWMsPrinter():SayBitmap( <nRow>, <nCol>, <cBitmap>, [nWidth], [nHeight] ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nRowNuméricoObrigatório

Posição vertical.

nColNuméricoObrigatório

Posição horizontal.

cBitmapCaractereObrigatório

Caminho e nome do arquivo de imagem.

nWidthNuméricoOpcional

Largura desejada.

nHeightNuméricoOpcional

Altura desejada.

SetDeviceSeleciona o dispositivo de saída do relatório.FWMsPrinter():SetDevice( <nDevice> ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nDeviceNuméricoObrigatório

Dispositivo, como IMP_SPOOL ou IMP_PDF.

SetFontDefine a fonte usada no relatório.FWMsPrinter():SetFont( <oFont>, <lForceFont> ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
oFontObjetoObrigatório

Objeto TFont.

lForceFontLógicoObrigatório

Força a aplicação da fonte informada.

SetLandscapeDefine a orientação do relatório como paisagem.FWMsPrinter():SetLandscape() -->
SetMarginDefine as margens do relatório.FWMsPrinter():SetMargin( <nLeft>, <nTop>, <nRight>, <nBottom> ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nLeftNuméricoObrigatório

Margem esquerda.

nTopNuméricoObrigatório

Margem superior.

nRightNuméricoObrigatório

Margem direita.

nBottomNuméricoObrigatório

Margem inferior.

SetPaperSizeDefine o tamanho de papel usado pela página.FWMsPrinter():SetPaperSize( <nPaperSize>, [nHeight], [nWidth] ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nPaperSizeNuméricoObrigatório

Código do tamanho de papel, como DMPAPER_A4.

nHeightNuméricoOpcional

Altura personalizada.

nWidthNuméricoOpcional

Largura personalizada.

SetPortraitDefine a orientação do relatório como retrato.FWMsPrinter():SetPortrait() -->
SetResolutionDefine a resolução do relatório.FWMsPrinter():SetResolution( [nResolution] ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nResolutionNuméricoOpcional

Resolução desejada.

SetupApresenta a janela de configuração de impressoras. Use somente quando o fluxo permitir interação.FWMsPrinter():Setup() -->
SetViewPDFDefine se o PDF será exibido após a geração.FWMsPrinter():SetViewPDF( <lViewPDF> ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
lViewPDFLógicoObrigatório

.T. para exibir o PDF após gerar.

Pdf417Imprime código de barras bidimensional no padrão PDF417.FWMsPrinter():Pdf417( <nRow>, <nCol>, <cCodeBar>, <nSizeBar>, <nHeight> ) -->
Parâmetros
NomeFormatoObrigatórioDescriçãoObservação
nRowNuméricoObrigatório

Posição vertical.

nColNuméricoObrigatório

Posição horizontal.

cCodeBarCaractereObrigatório

Conteúdo a codificar.

nSizeBarNuméricoObrigatório

Tamanho do código de barras.

nHeightNuméricoObrigatório

Altura da barra.

StartPageInicia a impressão de uma nova página. Deve ser chamado antes de inserir conteúdo na página.FWMsPrinter():StartPage() -->
03 · EXEMPLO PRÁTICO

PDF básico com configuração inicial

#Include "TOTVS.ch"
#Include "RPTDef.ch"
#Include "FWPrintSetup.ch"

User Function ExFWMsPrinter()
    Local oPrinter
    Local cArquivo        := "relatorio.rel"
    Local lAjusteLegado   := .F.
    Local lDesabilitaSetup:= .T.

    oPrinter := FWMsPrinter():New(cArquivo, IMP_PDF, ;
        lAjusteLegado, , lDesabilitaSetup)

    oPrinter:SetResolution(72)
    oPrinter:SetPortrait()
    oPrinter:SetPaperSize(DMPAPER_A4)
    oPrinter:SetMargin(60, 60, 60, 60)
    oPrinter:cPathPDF := "c:\temp\"

    oPrinter:StartPage()
    oPrinter:Say(100, 100, "Relatório de exemplo")
    oPrinter:EndPage()
    oPrinter:Preview()
Return
Resultado esperado

Cria um relatório PDF em A4, com margens definidas, escreve uma linha de texto e exibe a pré-visualização.

04 · EXEMPLO PRÁTICO

Impressão via spool sem setup

#Include "TOTVS.ch"
#Include "RPTDef.ch"
#Include "FWPrintSetup.ch"

User Function ExSpool()
    Local oPrinter
    Local cImpressora := "Microsoft Print to PDF"

    oPrinter := FWMsPrinter():New("spool.rel", IMP_SPOOL, ;
        .F., , .T., , , cImpressora)

    oPrinter:SetResolution(72)
    oPrinter:SetPortrait()
    oPrinter:SetPaperSize(DMPAPER_A4)

    oPrinter:StartPage()
    oPrinter:Say(100, 100, "Saída enviada ao dispositivo configurado")
    oPrinter:EndPage()
    oPrinter:Print()
Return
Resultado esperado

Quando o setup é desabilitado, o destino precisa ser configurado explicitamente no código.

05 · EXEMPLO PRÁTICO

Imagem em relatório

#Include "TOTVS.ch"
#Include "RPTDef.ch"

User Function ExImagemRel()
    Local oPrinter := FWMsPrinter():New("imagem.rel", IMP_PDF, .F., , .T.)

    oPrinter:StartPage()
    oPrinter:SayBitmap(100, 200, "c:\temp\logo.bmp", 300, 120)
    oPrinter:EndPage()
    oPrinter:Preview()
Return
Resultado esperado

SayBitmap permite inserir imagem no relatório. Valide caminho, formato e permissões no ambiente onde o relatório será gerado.

06 · EXEMPLO PRÁTICO

Métodos e propriedades mais usados

// Ciclo básico
oPrinter:StartPage()
oPrinter:Say(100, 100, "Texto")
oPrinter:Line(130, 100, 130, 500)
oPrinter:Box(150, 100, 250, 500)
oPrinter:EndPage()

// Saída
oPrinter:Preview() // visualiza
oPrinter:Print()   // envia para impressão
Resultado esperado

Os métodos de desenho montam a página. Propriedades como cPathPDF, cPrinter, nDevice, lServer, lViewPDF, nPageWidth e nPageHeight ajudam a controlar destino, dispositivo e dimensões.

BOAS PRÁTICAS
  • Para relatórios novos, prefira FWMsPrinter em vez de TMSPrinter, que aparece na documentação como descontinuada.
  • Configure o relatório logo após criar o objeto: resolução, orientação, tamanho do papel e margens devem ser definidos antes de desenhar o conteúdo.
  • Para PDF automático sem interface, use IMP_PDF, desabilite o setup quando apropriado e defina o caminho de saída conforme o ambiente.
  • Para impressão sem tela de seleção, informe corretamente cPrinter; a seleção feita na tela de setup não funciona no sentido inverso para pré-selecionar valores na FWMsPrinter.
  • Use FWMsExcel, FWMsExcelEx, FWMsExcelXlsx ou FwPrinterXlsx quando a necessidade for planilha; FWMsPrinter é voltada a PDF ou spool/impressão.
  • Para imprimir imagens, use métodos como SayBitmap e valide o formato suportado no ambiente.
  • Use SetParm("-RFS") quando precisar reduzir diferenças de tamanho de fonte entre PDF, fila de impressão e preview, respeitando a disponibilidade da build/TotvsPrinter.
  • Organize o desenho em ciclos de página: StartPage(), conteúdo, EndPage() e, ao final, Preview(), Print() ou geração do PDF.
ARMADILHAS COMUNS
  • A geração de PDF pode exigir interface gráfica do sistema operacional, conforme observação da documentação oficial.
  • lAdjustToLegacy pode distorcer elementos como BOX e FILLRECT em relatórios novos; evite depender desse ajuste sem validar visualmente.
  • Quando o usuário cancela a tela de impressão, verifique o resultado/modal antes de aplicar definições ou continuar o fluxo.
  • O arquivo gerado pelo binário pode ser salvo em lower case, mesmo que o nome seja manipulado com Upper().
  • Não espere gerar XLS, XLSX ou XML com FWMsPrinter; para isso use as classes de planilha adequadas.
  • Em jobs ou schedules, evite depender de telas interativas e configure caminho, dispositivo, impressora e cópias de forma explícita.
  • Em execução via servidor, imagens e caminhos precisam estar acessíveis pela máquina servidora, não apenas pela estação do usuário.
  • A documentação local de TMSPrinter informa limite histórico de 128KB por página; use isso como alerta ao manter relatórios legados e prefira reestruturar relatórios grandes em FWMsPrinter/SmartView.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. FWMsPrinter. TDN. Classe para visualizar e imprimir relatório.
  2. TOTVS. TMSPrinter (descontinuado). TOTVSTEC / TDN. Página histórica de referência.
  3. TOTVS. Classe FWMSPrinter: geração automática de PDF sem interface. Central de Atendimento TOTVS, 30 set. 2021.
  4. TOTVS. FwMsPrinter: alteração da seleção do setup. Central de Atendimento TOTVS, 11 jan. 2022.
  5. TOTVS. FWMsPrinter e geração de planilhas Excel/XLS/XLSX/XML. Central de Atendimento TOTVS, 30 jan. 2025.
Situação
Publicado
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR
0 comentário(s) aprovado(s)

Comentários

Ainda não há comentários aprovados.

Entre com Google ou Microsoft para comentar.

Powered by Usina Docs · Alpha