Usina BRGuía AdvPL
Ingresar
← Todos los temas
CLASEPublicado

FWMsPrinter

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

Crea un objeto para generar, previsualizar e imprimir informes gráficos en AdvPL.

InformesImpresiónPDFFrameworkFWMsPrinter
01 · DESCRIPCIÓN GENERAL

Descripción general

FWMsPrinter es la clase de impresión del framework utilizada para montar informes gráficos, generar archivos PDF o enviar la salida al spool/impresora. Sustituye el uso directo de TMSPrinter en nuevos desarrollos y mantiene opciones de compatibilidad para informes heredados. El flujo habitual es crear el objeto, configurar resolución, orientación, papel y márgenes, iniciar la página, dibujar textos, líneas, cuadros o imágenes, finalizar la página y luego previsualizar, imprimir o generar el archivo.

02 · SINTAXIS

Sintaxis

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

Parámetros

cFilePrinter
CarácterObligatorio

Nombre del archivo de informe que se creará. Evita caracteres especiales para reducir problemas de generación y uso.

nDevice
NuméricoOpcional

Tipo de salida. IMP_SPOOL envía a impresora/spool; IMP_PDF genera un archivo PDF a partir del informe.

Predeterminado: IMP_SPOOL
lAdjustToLegacy
LógicoOpcional

Cuando es verdadero, recalcula coordenadas para compatibilidad con proporciones heredadas de TMSPrinter. En informes nuevos suele usarse .F.

Predeterminado: .T.
cPathInServer
CarácterOpcional

Directorio del servidor donde se guardará el archivo del informe.

lDisableSetup
LógicoOpcional

Cuando .T., no muestra la pantalla de setup; el programa queda responsable del destino y la configuración.

Predeterminado: .F.
oPrintSetup
ObjetoOpcional

Objeto FWPrintSetup informado por el usuario cuando la rutina necesita controlar la configuración de impresión.

cPrinter
CarácterOpcional

Nombre de la impresora de destino, relevante cuando se deshabilita el setup y la salida debe ir a un dispositivo específico.

lServer
LógicoOpcional

Indica impresión vía servidor, sin copiar el archivo .REL al cliente.

Predeterminado: .F.
lRaw
LógicoOpcional

Indica impresión RAW/PCL para escenarios específicos de impresoras compatibles.

lViewPDF
LógicoOpcional

Para salida PDF, define si el archivo se mostrará después de generarlo.

Predeterminado: .T.
nQtdCopy
NuméricoOpcional

Cantidad de copias para impresión por spool, especialmente útil en jobs o schedules sin interacción del usuario.

lPDFAsPNG
LógicoOpcional

Parámetro relacionado con la generación/tratamiento del PDF como imagen, según la disponibilidad de la LIB y de TotvsPrinter utilizados.

lConvertFont
LógicoOpcional

Indica si se aplicará la conversión del tamaño de fuente. Cuando .F., la conversión no se realiza.

Predeterminado: .T.
lHasBuffer
LógicoOpcional

Disponible a partir de LIB 20240520 para indicar si debe usarse el buffer de archivo.

Predeterminado: .T.

Métodos

NewMétodo constructor de la clase. Úsalo para crear el objeto de impresión antes de configurar página, destino y contenido.FWMsPrinter():New( <cFilePrinter>, [nDevice], [lAdjustToLegacy], [cPathInServer], [lDisableSetup], [lTReport], [@oPrintSetup], [cPrinter], [lServer], [lPDFAsPNG], [lRaw], [lViewPDF], [nQtdCopy], [lConvertFont], [lHasBuffer] ) --> oPrinter
Parámetros
NombreFormatoObligatorioDescripciónObservación
cFilePrinterCaractereObligatorio

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.

SetParmDefine parámetros internos. La opción documentada "-RFS" reduce diferencias de tamaño de fuente entre PDF, preview y cola de impresión.FWMsPrinter():SetParm( "-RFS" ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
cParmCaractereObligatorio

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

BoxInserta un rectángulo en el informe. Úsalo para marcos, áreas destacadas y separadores visuales.FWMsPrinter():Box( <nRow>, <nCol>, <nBottom>, <nRight>, [cPixel] ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nRowNuméricoObligatorio

Coordenada vertical inicial.

nColNuméricoObligatorio

Coordenada horizontal inicial.

nBottomNuméricoObligatorio

Coordenada inferior do retângulo.

nRightNuméricoObligatorio

Coordenada direita do retângulo.

cPixelCaractereOpcional

Indica tratamento de coordenadas em pixels quando aplicável.

CancelCancela la generación del informe actual.FWMsPrinter():Cancel() -->
CanceledRetorna el estado de cancelación del informe, útil para detener con seguridad procesos largos.FWMsPrinter():Canceled() --> lRet
Retorno

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

Cmtr2PixConvierte coordenadas de medida a píxeles por referencia.FWMsPrinter():Cmtr2Pix( [nLinha], [nCol] ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nLinhaNuméricoOpcional

Linha/posição vertical a converter.

nColNuméricoOpcional

Coluna/posição horizontal a converter.

EAN13Imprime código de barras EAN13. Según la documentación, está disponible solo para impresión horizontal y requiere versiones compatibles de LIB/TOTVS Printer.FWMsPrinter():EAN13( <nRow>, <nCol>, <cCodeBar>, <nTotalWidth>, <nHeight> ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nRowNuméricoObligatorio

Posição relativa ao topo.

nColNuméricoObligatorio

Posição relativa à esquerda.

cCodeBarCaractereObligatorio

Texto a transformar em código de barras.

nTotalWidthNuméricoObligatorio

Largura total do código de barras.

nHeightNuméricoObligatorio

Altura da barra.

Code128Imprime código de barras Code128.FWMsPrinter():Code128( <nRow>, <nCol>, <cCodeBar>, <nWidth>, <nHeight>, [lSay], [oFont], [nTotalWidth] ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nRowNuméricoObligatorio

Posição vertical.

nColNuméricoObligatorio

Posição horizontal.

cCodeBarCaractereObligatorio

Conteúdo a codificar.

nWidthNuméricoObligatorio

Largura do código.

nHeightNuméricoObligatorio

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 Code128C, normalmente adecuado para secuencias numéricas compactas.FWMsPrinter():Code128C( <nRow>, <nCol>, <cCodeBar>, <nSizeBar> ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nRowNuméricoObligatorio

Posição vertical.

nColNuméricoObligatorio

Posição horizontal.

cCodeBarCaractereObligatorio

Conteúdo a codificar.

nSizeBarNuméricoObligatorio

Tamanho do código de barras.

FwMsBarImprime códigos de barras soportados por MsBar, como EAN13, EAN8, UPCA, CODE128, INT25, IND25, CODABAR y CODE3_9.FWMsPrinter():FWMsBar( <cTypeBar>, <nRow>, <nCol>, <cCode>, <oPrint>, [lCheck], [nColor], [lHorz], [nWidth], [nHeight], [lBanner], [cFont], [cMode], [lPrint], [nPFWidth], [nPFHeight], [lCmtr2Pix] ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
cTypeBarCaractereObligatorio

Tipo do código de barras.

nRowNuméricoObligatorio

Posição vertical.

nColNuméricoObligatorio

Posição horizontal.

cCodeCaractereObligatorio

Texto a transformar em código de barras.

oPrintObjetoObligatorio

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
NombreFormatoObligatorioDescripciónObservación
nColNuméricoObligatorio

Posição horizontal.

nRowNuméricoObligatorio

Posição vertical.

cCodeBarCaractereObligatorio

Conteúdo a codificar.

nSizeBarNuméricoObligatorio

Tamanho do código.

EllipseInserta una elipse en el informe.FWMsPrinter():Ellipse( <nLeft>, <nTop>, <nBottom>, <nRight>, [nColorIn], [nColorOut], [nLineType], [cPixel] ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nLeftNuméricoObligatorio

Coordenada esquerda.

nTopNuméricoObligatorio

Coordenada superior.

nBottomNuméricoObligatorio

Coordenada inferior.

nRightNuméricoObligatorio

Coordenada direita.

nColorInNuméricoOpcional

Cor interna.

nColorOutNuméricoOpcional

Cor da borda.

nLineTypeNuméricoOpcional

Tipo de linha.

cPixelCaractereOpcional

Tratamento de coordenadas em pixels.

EndPageFinaliza la página actual. Llámalo después de dibujar todo el contenido de la página.FWMsPrinter():EndPage() -->
FillRectCrea un rectángulo relleno para fondos, franjas y áreas destacadas.FWMsPrinter():FillRect( <aCoords>, [oBrush], [cPixel] ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
aCoordsArrayObligatorio

Coordenadas do retângulo.

oBrushObjetoOpcional

Objeto TBrush usado no preenchimento.

cPixelCaractereOpcional

Tratamento de coordenadas em pixels.

GetFontWidthsRetorna información de anchura de caracteres para una fuente.FWMsPrinter():GetFontWidths( [oFont], [@aFontSize] ) --> aRet
Parámetros
NombreFormatoObligatorioDescripciónObservación
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 la orientación del informe.FWMsPrinter():GetOrientation() --> nOrientation
Retorno

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

GetTextHeightRetorna la altura ocupada por un texto con la fuente seleccionada.FWMsPrinter():GetTextHeight( <cTexto>, <oFont> ) --> nHeight
Parámetros
NombreFormatoObligatorioDescripciónObservación
cTextoCaractereObligatorio

Texto a medir.

oFontObjetoObligatorio

Fonte usada no cálculo.

Retorno

nHeight: altura calculada.

GetTextWidthRetorna la anchura ocupada por un texto con la fuente seleccionada.FWMsPrinter():GetTextWidth( <cTexto>, <oFont>, <nType> ) --> nWidth
Parámetros
NombreFormatoObligatorioDescripciónObservación
cTextoCaractereObligatorio

Texto a medir.

oFontObjetoObligatorio

Fonte usada no cálculo.

nTypeNuméricoObligatorio

Tipo de cálculo de largura.

Retorno

nWidth: largura calculada.

GetViewPDFRetorna si el PDF debe mostrarse después de generarlo.FWMsPrinter():GetViewPDF() --> lViewPDF
Retorno

lViewPDF: .T. para exibir o PDF.

IsPrinterActiveRetorna si la impresora está activa o disponible para el informe.FWMsPrinter():IsPrinterActive() -->
LineInserta una línea en el informe.FWMsPrinter():Line( <nTop>, <nLeft>, <nBottom>, <nRight>, [nColor], [cPixel] ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nTopNuméricoObligatorio

Coordenada superior/inicial.

nLeftNuméricoObligatorio

Coordenada esquerda/inicial.

nBottomNuméricoObligatorio

Coordenada inferior/final.

nRightNuméricoObligatorio

Coordenada direita/final.

nColorNuméricoOpcional

Cor da linha.

cPixelCaractereOpcional

Tratamento de coordenadas em pixels.

nHorzResRetorna la resolución horizontal de la impresora configurada.FWMsPrinter():nHorzRes() --> nResult
Retorno

nResult: resolução horizontal.

nHorzSizeRetorna la anchura de la página.FWMsPrinter():nHorzSize() --> nHorzSize
Retorno

nHorzSize: largura da página.

nLogPixelXRetorna la resolución horizontal en píxeles lógicos de la impresora configurada.FWMsPrinter():nLogPixelX() --> nResult
Retorno

nResult: pixels lógicos no eixo X.

nLogPixelYRetorna la resolución vertical en píxeles lógicos de la impresora configurada.FWMsPrinter():nLogPixelY() --> nResult
Retorno

nResult: pixels lógicos no eixo Y.

nVertResRetorna la resolución vertical de la impresora configurada.FWMsPrinter():nVertRes() --> nResult
Retorno

nResult: resolução vertical.

nVertSizeRetorna la altura de la página.FWMsPrinter():nVertSize() --> nVertSize
Retorno

nVertSize: altura da página.

PaperSizeRetorna el tamaño de papel configurado.FWMsPrinter():PaperSize() --> nPaperSize
Retorno

nPaperSize: código do tamanho do papel.

PreviewAbre la vista previa del informe generado.FWMsPrinter():Preview() -->
PrintEnvía el informe a la impresora o al destino configurado.FWMsPrinter():Print() -->
PrinterNameRetorna el nombre de la impresora configurada.FWMsPrinter():PrinterName() --> cImpressora
Retorno

cImpressora: nome da impressora.

QRCodeImprime un QR Code en el informe.FWMsPrinter():QRCode( <nRow>, <nCol>, <cCodeBar>, <nSizeBar> ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nRowNuméricoObligatorio

Posição vertical.

nColNuméricoObligatorio

Posição horizontal.

cCodeBarCaractereObligatorio

Conteúdo a codificar.

nSizeBarNuméricoObligatorio

Tamanho do QR Code.

SayInserta texto en el informe. Es el método base para escribir títulos, campos y mensajes.FWMsPrinter():Say( <nRow>, <nCol>, <cText>, [oFont], [nWidth], [nClrText], [nAngle] ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nRowNuméricoObligatorio

Posição vertical.

nColNuméricoObligatorio

Posição horizontal.

cTextCaractereObligatorio

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.

SayAlignInserta texto con alineación horizontal y vertical dentro de un área.FWMsPrinter():SayAlign( <nRow>, <nCol>, <cText>, [oFont], [nWidth], [nHeight], [nClrText], [nAlignHorz], [nAlignVert] ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nRowNuméricoObligatorio

Posição vertical.

nColNuméricoObligatorio

Posição horizontal.

cTextCaractereObligatorio

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.

SayBitmapInserta una imagen en el informe. Valida formato, ruta y disponibilidad en el entorno de ejecución.FWMsPrinter():SayBitmap( <nRow>, <nCol>, <cBitmap>, [nWidth], [nHeight] ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nRowNuméricoObligatorio

Posição vertical.

nColNuméricoObligatorio

Posição horizontal.

cBitmapCaractereObligatorio

Caminho e nome do arquivo de imagem.

nWidthNuméricoOpcional

Largura desejada.

nHeightNuméricoOpcional

Altura desejada.

SetDeviceSelecciona el dispositivo de salida del informe, como spool o PDF.FWMsPrinter():SetDevice( <nDevice> ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nDeviceNuméricoObligatorio

Dispositivo, como IMP_SPOOL ou IMP_PDF.

SetFontDefine la fuente usada en el informe.FWMsPrinter():SetFont( <oFont>, <lForceFont> ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
oFontObjetoObligatorio

Objeto TFont.

lForceFontLógicoObligatorio

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

SetLandscapeDefine la orientación del informe como paisaje.FWMsPrinter():SetLandscape() -->
SetMarginDefine los márgenes del informe.FWMsPrinter():SetMargin( <nLeft>, <nTop>, <nRight>, <nBottom> ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nLeftNuméricoObligatorio

Margem esquerda.

nTopNuméricoObligatorio

Margem superior.

nRightNuméricoObligatorio

Margem direita.

nBottomNuméricoObligatorio

Margem inferior.

SetPaperSizeDefine el tamaño de papel usado por la página.FWMsPrinter():SetPaperSize( <nPaperSize>, [nHeight], [nWidth] ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nPaperSizeNuméricoObligatorio

Código do tamanho de papel, como DMPAPER_A4.

nHeightNuméricoOpcional

Altura personalizada.

nWidthNuméricoOpcional

Largura personalizada.

SetPortraitDefine la orientación del informe como retrato.FWMsPrinter():SetPortrait() -->
SetResolutionDefine la resolución del informe.FWMsPrinter():SetResolution( [nResolution] ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nResolutionNuméricoOpcional

Resolução desejada.

SetupMuestra la ventana de configuración de impresora cuando el flujo permite interacción del usuario.FWMsPrinter():Setup() -->
SetViewPDFDefine si el PDF generado debe mostrarse después de la generación.FWMsPrinter():SetViewPDF( <lViewPDF> ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
lViewPDFLógicoObligatorio

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

Pdf417Imprime código de barras bidimensional PDF417.FWMsPrinter():Pdf417( <nRow>, <nCol>, <cCodeBar>, <nSizeBar>, <nHeight> ) -->
Parámetros
NombreFormatoObligatorioDescripciónObservación
nRowNuméricoObligatorio

Posição vertical.

nColNuméricoObligatorio

Posição horizontal.

cCodeBarCaractereObligatorio

Conteúdo a codificar.

nSizeBarNuméricoObligatorio

Tamanho do código de barras.

nHeightNuméricoObligatorio

Altura da barra.

StartPageInicia una nueva página de impresión. Debe llamarse antes de agregar contenido a la página.FWMsPrinter():StartPage() -->
03 · EJEMPLO PRÁCTICO

PDF básico con configuración inicial

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

User Function ExFWMsPrinter()
    Local oPrinter
    Local cArchivo        := "informe.rel"
    Local lAjusteLegado   := .F.
    Local lDeshabilitaSet := .T.

    oPrinter := FWMsPrinter():New(cArchivo, IMP_PDF, ;
        lAjusteLegado, , lDeshabilitaSet)

    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, "Informe de ejemplo")
    oPrinter:EndPage()
    oPrinter:Preview()
Return
Resultado esperado

Crea un informe PDF en A4, con márgenes definidos, escribe una línea de texto y abre la previsualización.

04 · EJEMPLO PRÁCTICO

Impresión por spool sin 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

Cuando se deshabilita el setup, el destino debe configurarse explícitamente en el código.

05 · EJEMPLO PRÁCTICO

Imagen en un informe

#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 inserta una imagen en el informe. Valida ruta, formato y permisos en el entorno de generación.

06 · EJEMPLO PRÁCTICO

Métodos y propiedades más 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()

// Salida
oPrinter:Preview() // previsualiza
oPrinter:Print()   // imprime
Resultado esperado

Los métodos de dibujo montan la página. Propiedades como cPathPDF, cPrinter, nDevice, lServer, lViewPDF, nPageWidth y nPageHeight ayudan a controlar destino, dispositivo y dimensiones.

BUENAS PRÁCTICAS
  • Para informes nuevos, prefiere FWMsPrinter en lugar de TMSPrinter, que aparece en la documentación como descontinuada.
  • Configura resolución, orientación, tamaño del papel y márgenes justo después de crear el objeto y antes de dibujar el contenido.
  • Para PDF automático sin interfaz, usa IMP_PDF, deshabilita el setup cuando corresponda y define la ruta de salida según el entorno.
  • Para imprimir sin pantalla de selección, informa correctamente cPrinter; la selección del setup no funciona a la inversa para preseleccionar valores en FWMsPrinter.
  • Usa FWMsExcel, FWMsExcelEx, FWMsExcelXlsx o FwPrinterXlsx cuando la necesidad sea una hoja de cálculo; FWMsPrinter está orientada a PDF o spool/impresión.
  • Para imprimir imágenes, usa SayBitmap y valida el formato admitido en el entorno.
  • Usa SetParm("-RFS") cuando necesites reducir diferencias de tamaño de fuente entre PDF, cola de impresión y preview, respetando la disponibilidad de la build/TotvsPrinter.
  • Organiza el dibujo en ciclos de página: StartPage(), contenido, EndPage() y, al final, Preview(), Print() o generación del PDF.
ERRORES COMUNES
  • La generación de PDF puede requerir interfaz gráfica del sistema operativo según la documentación oficial.
  • lAdjustToLegacy puede distorsionar elementos como BOX y FILLRECT en informes nuevos; valida visualmente antes de depender de ese ajuste.
  • Cuando el usuario cancela la pantalla de impresión, verifica el estado/modal antes de aplicar definiciones o continuar el flujo.
  • El archivo generado puede guardarse en minúsculas por el binario de Protheus aunque el nombre se manipule con Upper().
  • No esperes generar XLS, XLSX o XML con FWMsPrinter; para eso utiliza clases de hojas de cálculo.
  • En jobs o schedules, evita depender de pantallas interactivas y configura explícitamente ruta, dispositivo, impresora y copias.
  • En ejecución vía servidor, las imágenes y rutas deben estar accesibles por la máquina servidora, no solo por la estación del usuario.
  • La documentación local de TMSPrinter menciona un límite histórico de 128KB por página; úsalo como alerta al mantener informes heredados y prefiere reestructurar informes grandes con FWMsPrinter/SmartView.

Contenido relacionado

REFERENCIAS
  1. TOTVS. FWMsPrinter. TDN. Clase para previsualizar e imprimir informes.
  2. TOTVS. TMSPrinter (descontinuado). TOTVSTEC / TDN. Página histórica de referencia.
  3. TOTVS. Clase FWMSPrinter: generación automática de PDF sin interfaz. Central de Atención TOTVS, 30 sept. 2021.
  4. TOTVS. FwMsPrinter: cambiar la selección del setup. Central de Atención TOTVS, 11 ene. 2022.
  5. TOTVS. FWMsPrinter y generación de hojas Excel/XLS/XLSX/XML. Central de Atención TOTVS, 30 ene. 2025.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR
0 comentario(s) aprobado(s)

Comentarios

Todavía no hay comentarios aprobados.

Inicia sesión con Google o Microsoft para comentar.

Desarrollado con Usina Docs · Alpha