Estimado Mariano,
El problema de tamaño que experimenta se debe a cómo FWH genera internamente el PDF, no a un parámetro de compresión que falte en oBrw:Report(). Actualmente no existe un parámetro directo de compresión en el método Report() de xBrowse.
Causa raíz
Cuando usa oBrw:Report(..., "PDF") o PRINT oPrn FILE 'archivo.pdf', FWH sigue esta cadena de prioridades para generar el PDF: 0-cite-0
- Image2PDF (si lUseI2PDF está activo)
- FWSavePreviewToPDF (si lUseFWPDF está activo)
- Microsoft Print to PDF (driver del sistema)
- MSWord (si está instalado)
- FWSavePreviewToPDF (fallback final)
El método por defecto FWSavePreviewToPDF (en prv2pdf.prg) convierte cada página EMF a una imagen JPEG a calidad 100 (máxima, sin compresión) y la incrusta como imagen de página completa en el PDF: 0-cite-1
Esto significa que el texto no es texto real en el PDF, sino una imagen rasterizada por página, lo cual explica los 80 MB.
Solución recomendada: Usar HaruPDF
La mejor opción nativa dentro de FWH es usar HaruPDF, que genera PDF con texto nativo (no imágenes) y aplica compresión HPDF_COMP_ALL automáticamente: 0-cite-2
Para activarlo, necesita hacer esto antes de llamar a oBrw:Report():
REQUEST FWHARU // En cualquier módulo del proyecto (una sola vez)
// Antes de generar el reporte:
TPrinter():lUseHaruPDF := .t.
oBrw:Report( '.\QR\PR', .F., nil, nil, nil, "PDF" )
Esto hará que el PDF se genere con texto real y compresión nativa, produciendo archivos mucho más pequeños. 0-cite-3
Requisitos para HaruPDF:
Incluir REQUEST FWHARU en algún módulo del proyecto 0-cite-4
Enlazar las librerías adicionales: hbhpdf.lib y libhpdf.lib 0-cite-5
Establecer TPrinter():lUseHaruPDF := .t. antes de imprimir 0-cite-6
Limitaciones de HaruPDF:
- No soporta texto Unicode
- Algunas gráficas avanzadas de FWH (TGraph, barras de progreso, charts) pueden no renderizarse correctamente 0-cite-7
Alternativa: Microsoft Print to PDF
Si tiene el driver "Microsoft Print to PDF" instalado en Windows (viene por defecto en Windows 10/11), FWH lo usará automáticamente como primera opción cuando no se especifica HaruPDF ni Image2PDF. Esta opción también genera PDFs más pequeños que el método FWSavePreviewToPDF: 0-cite-8
Para confirmar que se está usando este driver y no el fallback de JPEG, verifique que el driver existe en su sistema. Si no, la instalación del feature de Windows "Microsoft Print to PDF" podría resolver su problema sin cambios de código.
Lo mismo aplica para PRINT...ENDPRINT
El mismo enfoque funciona para su caso con PRINT oPrn:
REQUEST FWHARU
TPrinter():lUseHaruPDF := .t.
PRINT oPrn NAME "INFORMACION" FILE '.\QR\TEST.PDF'
// ... su código de impresión ...
ENDPRINT
``` [0-cite-9](#0-cite-9)