cFilePrinterReport file name to be created. Avoid special characters to reduce generation and usage issues.
AdvPL GuideFWMsPrinter():New( <cFilePrinter>, [nDevice], [lAdjustToLegacy], [cPathInServer], [lDisableSetup], ... )Creates an object for generating, previewing and printing graphical reports in AdvPL.
FWMsPrinter is the framework printing class used to build graphical reports, generate PDF files or send output to spool/printers. It replaces direct TMSPrinter usage in new development while keeping compatibility options for legacy reports. The usual flow is to create the object, configure resolution, orientation, paper and margins, start the page, draw text, lines, boxes or images, finish the page and then preview, print or generate the file.
FWMsPrinter():New( <cFilePrinter>, [nDevice], [lAdjustToLegacy], [cPathInServer], [lDisableSetup], ... )cFilePrinterReport file name to be created. Avoid special characters to reduce generation and usage issues.
nDeviceOutput type. IMP_SPOOL sends to printer/spool; IMP_PDF generates a PDF file from the report.
Default:IMP_SPOOLlAdjustToLegacyWhen true, recalculates coordinates for legacy TMSPrinter proportions. For new reports, .F. is commonly used.
Default:.T.cPathInServerServer directory where the report file will be saved.
lDisableSetupWhen .T., does not display the setup screen; the program is responsible for destination and settings.
Default:.F.oPrintSetupFWPrintSetup object supplied by the user when the routine needs to control print settings.
cPrinterDestination printer name, relevant when setup is disabled and output must go to a specific device.
lServerIndicates server-side printing, without copying the .REL file to the client.
Default:.F.lRawIndicates RAW/PCL printing for compatible printer-specific scenarios.
lViewPDFFor PDF output, defines whether the file will be displayed after generation.
Default:.T.nQtdCopyNumber of copies for spool printing, especially useful in jobs or schedules without user interaction.
lPDFAsPNGParameter related to PDF generation/handling as an image, depending on the available LIB and TotvsPrinter version.
lConvertFontIndicates whether font size conversion is applied. When .F., conversion is not performed.
Default:.T.lHasBufferAvailable from LIB 20240520 onward to indicate whether the file buffer should be used.
Default:.T.FWMsPrinter():New( <cFilePrinter>, [nDevice], [lAdjustToLegacy], [cPathInServer], [lDisableSetup], [lTReport], [@oPrintSetup], [cPrinter], [lServer], [lPDFAsPNG], [lRaw], [lViewPDF], [nQtdCopy], [lConvertFont], [lHasBuffer] ) --> oPrintercFilePrinterCaractereRequiredNome do arquivo de relatório.
nDeviceNuméricoOptionalDispositivo de saída, como IMP_SPOOL ou IMP_PDF.
lAdjustToLegacyLógicoOptionalCompatibiliza coordenadas com relatórios legados.
cPathInServerCaractereOptionalCaminho no servidor para gravação do arquivo.
lDisableSetupLógicoOptionalQuando verdadeiro, não exibe a tela de configuração.
lTReportLógicoOptionalIndica uso integrado com TReport quando aplicável.
oPrintSetupObjetoOptionalObjeto de configuração de impressão passado por referência.
cPrinterCaractereOptionalNome da impressora de destino.
lServerLógicoOptionalIndica geração/impressão pelo servidor.
lPDFAsPNGLógicoOptionalControla tratamento do PDF como imagem quando suportado.
lRawLógicoOptionalIndica uso de impressão RAW/PCL.
lViewPDFLógicoOptionalDefine se o PDF será exibido após a geração.
nQtdCopyNuméricoOptionalQuantidade de cópias.
lConvertFontLógicoOptionalControla conversão de tamanho de fonte.
lHasBufferLógicoOptionalIndica uso de buffer de arquivo nas LIBs que suportam o recurso.
oPrinter: objeto FWMsPrinter criado.
FWMsPrinter():SetParm( "-RFS" ) -->cParmCaractereRequiredChave de parâmetro. Use "-RFS" para Real Font Sizes.
FWMsPrinter():Box( <nRow>, <nCol>, <nBottom>, <nRight>, [cPixel] ) -->nRowNuméricoRequiredCoordenada vertical inicial.
nColNuméricoRequiredCoordenada horizontal inicial.
nBottomNuméricoRequiredCoordenada inferior do retângulo.
nRightNuméricoRequiredCoordenada direita do retângulo.
cPixelCaractereOptionalIndica tratamento de coordenadas em pixels quando aplicável.
FWMsPrinter():Cancel() -->FWMsPrinter():Canceled() --> lRetlRet: .T. quando o relatório foi cancelado.
FWMsPrinter():Cmtr2Pix( [nLinha], [nCol] ) -->nLinhaNuméricoOptionalLinha/posição vertical a converter.
nColNuméricoOptionalColuna/posição horizontal a converter.
FWMsPrinter():EAN13( <nRow>, <nCol>, <cCodeBar>, <nTotalWidth>, <nHeight> ) -->nRowNuméricoRequiredPosição relativa ao topo.
nColNuméricoRequiredPosição relativa à esquerda.
cCodeBarCaractereRequiredTexto a transformar em código de barras.
nTotalWidthNuméricoRequiredLargura total do código de barras.
nHeightNuméricoRequiredAltura da barra.
FWMsPrinter():Code128( <nRow>, <nCol>, <cCodeBar>, <nWidth>, <nHeight>, [lSay], [oFont], [nTotalWidth] ) -->nRowNuméricoRequiredPosição vertical.
nColNuméricoRequiredPosição horizontal.
cCodeBarCaractereRequiredConteúdo a codificar.
nWidthNuméricoRequiredLargura do código.
nHeightNuméricoRequiredAltura do código.
lSayLógicoOptionalIndica se o texto deve ser exibido junto ao código.
oFontObjetoOptionalFonte usada no texto.
nTotalWidthNuméricoOptionalLargura total desejada.
FWMsPrinter():Code128C( <nRow>, <nCol>, <cCodeBar>, <nSizeBar> ) -->nRowNuméricoRequiredPosição vertical.
nColNuméricoRequiredPosição horizontal.
cCodeBarCaractereRequiredConteúdo a codificar.
nSizeBarNuméricoRequiredTamanho do código de barras.
FWMsPrinter():FWMsBar( <cTypeBar>, <nRow>, <nCol>, <cCode>, <oPrint>, [lCheck], [nColor], [lHorz], [nWidth], [nHeight], [lBanner], [cFont], [cMode], [lPrint], [nPFWidth], [nPFHeight], [lCmtr2Pix] ) -->cTypeBarCaractereRequiredTipo do código de barras.
nRowNuméricoRequiredPosição vertical.
nColNuméricoRequiredPosição horizontal.
cCodeCaractereRequiredTexto a transformar em código de barras.
oPrintObjetoRequiredObjeto de impressão.
lCheckLógicoOptionalCalcula dígito de controle.
nColorNuméricoOptionalCor do código de barras.
lHorzLógicoOptionalImprime na horizontal.
nWidthNuméricoOptionalLargura da barra.
nHeightNuméricoOptionalAltura da barra.
lBannerLógicoOptionalImprime o texto abaixo do código.
cFontCaractereOptionalFonte usada no texto.
cModeCaractereOptionalModo do código de barras.
lPrintLógicoOptionalExecuta Print() pelo MsBar.
nPFWidthNuméricoOptionalAjuste de largura da fonte.
nPFHeightNuméricoOptionalAjuste de altura da fonte.
lCmtr2PixLógicoOptionalUsa Cmtr2Pix() para converter coordenadas.
FWMsPrinter():DataMatrix( <nCol>, <nRow>, <cCodeBar>, <nSizeBar> ) -->nColNuméricoRequiredPosição horizontal.
nRowNuméricoRequiredPosição vertical.
cCodeBarCaractereRequiredConteúdo a codificar.
nSizeBarNuméricoRequiredTamanho do código.
FWMsPrinter():Ellipse( <nLeft>, <nTop>, <nBottom>, <nRight>, [nColorIn], [nColorOut], [nLineType], [cPixel] ) -->nLeftNuméricoRequiredCoordenada esquerda.
nTopNuméricoRequiredCoordenada superior.
nBottomNuméricoRequiredCoordenada inferior.
nRightNuméricoRequiredCoordenada direita.
nColorInNuméricoOptionalCor interna.
nColorOutNuméricoOptionalCor da borda.
nLineTypeNuméricoOptionalTipo de linha.
cPixelCaractereOptionalTratamento de coordenadas em pixels.
FWMsPrinter():EndPage() -->FWMsPrinter():FillRect( <aCoords>, [oBrush], [cPixel] ) -->aCoordsArrayRequiredCoordenadas do retângulo.
oBrushObjetoOptionalObjeto TBrush usado no preenchimento.
cPixelCaractereOptionalTratamento de coordenadas em pixels.
FWMsPrinter():GetFontWidths( [oFont], [@aFontSize] ) --> aRetoFontObjetoOptionalFonte usada no cálculo.
aFontSizeArrayOptionalArray passado por referência para receber informações de tamanho.
aRet: vetor com larguras da fonte.
FWMsPrinter():GetOrientation() --> nOrientationnOrientation: orientação atual, como retrato ou paisagem.
FWMsPrinter():GetTextHeight( <cTexto>, <oFont> ) --> nHeightcTextoCaractereRequiredTexto a medir.
oFontObjetoRequiredFonte usada no cálculo.
nHeight: altura calculada.
FWMsPrinter():GetTextWidth( <cTexto>, <oFont>, <nType> ) --> nWidthcTextoCaractereRequiredTexto a medir.
oFontObjetoRequiredFonte usada no cálculo.
nTypeNuméricoRequiredTipo de cálculo de largura.
nWidth: largura calculada.
FWMsPrinter():GetViewPDF() --> lViewPDFlViewPDF: .T. para exibir o PDF.
FWMsPrinter():IsPrinterActive() -->FWMsPrinter():Line( <nTop>, <nLeft>, <nBottom>, <nRight>, [nColor], [cPixel] ) -->nTopNuméricoRequiredCoordenada superior/inicial.
nLeftNuméricoRequiredCoordenada esquerda/inicial.
nBottomNuméricoRequiredCoordenada inferior/final.
nRightNuméricoRequiredCoordenada direita/final.
nColorNuméricoOptionalCor da linha.
cPixelCaractereOptionalTratamento de coordenadas em pixels.
FWMsPrinter():nHorzRes() --> nResultnResult: resolução horizontal.
FWMsPrinter():nHorzSize() --> nHorzSizenHorzSize: largura da página.
FWMsPrinter():nLogPixelX() --> nResultnResult: pixels lógicos no eixo X.
FWMsPrinter():nLogPixelY() --> nResultnResult: pixels lógicos no eixo Y.
FWMsPrinter():nVertRes() --> nResultnResult: resolução vertical.
FWMsPrinter():nVertSize() --> nVertSizenVertSize: altura da página.
FWMsPrinter():PaperSize() --> nPaperSizenPaperSize: código do tamanho do papel.
FWMsPrinter():Preview() -->FWMsPrinter():Print() -->FWMsPrinter():PrinterName() --> cImpressoracImpressora: nome da impressora.
FWMsPrinter():QRCode( <nRow>, <nCol>, <cCodeBar>, <nSizeBar> ) -->nRowNuméricoRequiredPosição vertical.
nColNuméricoRequiredPosição horizontal.
cCodeBarCaractereRequiredConteúdo a codificar.
nSizeBarNuméricoRequiredTamanho do QR Code.
FWMsPrinter():Say( <nRow>, <nCol>, <cText>, [oFont], [nWidth], [nClrText], [nAngle] ) -->nRowNuméricoRequiredPosição vertical.
nColNuméricoRequiredPosição horizontal.
cTextCaractereRequiredTexto a imprimir.
oFontObjetoOptionalFonte utilizada.
nWidthNuméricoOptionalLargura disponível para o texto.
nClrTextNuméricoOptionalCor do texto.
nAngleNuméricoOptionalÂngulo de rotação.
FWMsPrinter():SayAlign( <nRow>, <nCol>, <cText>, [oFont], [nWidth], [nHeight], [nClrText], [nAlignHorz], [nAlignVert] ) -->nRowNuméricoRequiredPosição vertical.
nColNuméricoRequiredPosição horizontal.
cTextCaractereRequiredTexto a imprimir.
oFontObjetoOptionalFonte utilizada.
nWidthNuméricoOptionalLargura da área.
nHeightNuméricoOptionalAltura da área.
nClrTextNuméricoOptionalCor do texto.
nAlignHorzNuméricoOptionalAlinhamento horizontal.
nAlignVertNuméricoOptionalAlinhamento vertical.
FWMsPrinter():SayBitmap( <nRow>, <nCol>, <cBitmap>, [nWidth], [nHeight] ) -->nRowNuméricoRequiredPosição vertical.
nColNuméricoRequiredPosição horizontal.
cBitmapCaractereRequiredCaminho e nome do arquivo de imagem.
nWidthNuméricoOptionalLargura desejada.
nHeightNuméricoOptionalAltura desejada.
FWMsPrinter():SetDevice( <nDevice> ) -->nDeviceNuméricoRequiredDispositivo, como IMP_SPOOL ou IMP_PDF.
FWMsPrinter():SetFont( <oFont>, <lForceFont> ) -->oFontObjetoRequiredObjeto TFont.
lForceFontLógicoRequiredForça a aplicação da fonte informada.
FWMsPrinter():SetLandscape() -->FWMsPrinter():SetMargin( <nLeft>, <nTop>, <nRight>, <nBottom> ) -->nLeftNuméricoRequiredMargem esquerda.
nTopNuméricoRequiredMargem superior.
nRightNuméricoRequiredMargem direita.
nBottomNuméricoRequiredMargem inferior.
FWMsPrinter():SetPaperSize( <nPaperSize>, [nHeight], [nWidth] ) -->nPaperSizeNuméricoRequiredCódigo do tamanho de papel, como DMPAPER_A4.
nHeightNuméricoOptionalAltura personalizada.
nWidthNuméricoOptionalLargura personalizada.
FWMsPrinter():SetPortrait() -->FWMsPrinter():SetResolution( [nResolution] ) -->nResolutionNuméricoOptionalResolução desejada.
FWMsPrinter():Setup() -->FWMsPrinter():SetViewPDF( <lViewPDF> ) -->lViewPDFLógicoRequired.T. para exibir o PDF após gerar.
FWMsPrinter():Pdf417( <nRow>, <nCol>, <cCodeBar>, <nSizeBar>, <nHeight> ) -->nRowNuméricoRequiredPosição vertical.
nColNuméricoRequiredPosição horizontal.
cCodeBarCaractereRequiredConteúdo a codificar.
nSizeBarNuméricoRequiredTamanho do código de barras.
nHeightNuméricoRequiredAltura da barra.
FWMsPrinter():StartPage() -->#Include "TOTVS.ch"
#Include "RPTDef.ch"
#Include "FWPrintSetup.ch"
User Function ExFWMsPrinter()
Local oPrinter
Local cFile := "report.rel"
Local lLegacyAdjust := .F.
Local lDisableSetup := .T.
oPrinter := FWMsPrinter():New(cFile, IMP_PDF, ;
lLegacyAdjust, , lDisableSetup)
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, "Sample report")
oPrinter:EndPage()
oPrinter:Preview()
ReturnCreates an A4 PDF report with margins, writes one text line and opens the preview.
#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()
ReturnWhen setup is disabled, the destination must be configured explicitly in code.
#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()
ReturnSayBitmap inserts an image in the report. Validate path, format and permissions in the generation environment.
// Basic cycle
oPrinter:StartPage()
oPrinter:Say(100, 100, "Text")
oPrinter:Line(130, 100, 130, 500)
oPrinter:Box(150, 100, 250, 500)
oPrinter:EndPage()
// Output
oPrinter:Preview() // preview
oPrinter:Print() // printDrawing methods build the page. Properties such as cPathPDF, cPrinter, nDevice, lServer, lViewPDF, nPageWidth and nPageHeight help control destination, device and dimensions.
© 2026 Usina.BR. All rights reserved. TOTVS, Protheus, Microsiga and their respective logos are trademarks of their owners. AdvPL Guide is independent and uses limited, attributed excerpts justified by educational purposes. See the Terms of Use. Terms of Use
Comments
There are no approved comments yet.
Sign in with Google or Microsoft to comment.