Problema con PDF en FWH-19.09 - Mi GATO lo solucionó !!!

Post Reply
Cgallegoa
Posts: 335
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Problema con PDF en FWH-19.09 - Mi GATO lo solucionó !!!

Post by Cgallegoa »

Hola amigos, nuevamente dando lata.

No consigo que me funcione bien la generación de PDF con FWH-19.09

Emito un informe con TPRINTER PREVIEW, y desde allí (desde el Preview) genero el pdf.
Este es el resultado:
Image

Esta imagen es la correcta:
Image

Estos son los pasos: se emite un documento/informe directo al PREVIEW (RPREVIEW), y desde allí se manda el PDF si el usuario lo requiere.

La única forma es que logré que emitiera más o menos bien el PDF fue haciendo los siguentes cambios:
En RPREVIEW.PRG sustituyo la línea

Code: Select all

CLASSDATA bSaveAsPDF    INIT { |Self| ::SaveAs( .t. ) }
por

Code: Select all

CLASSDATA bSaveAsPDF    INIT { |Self|FWSavePreviewToPDF( Self ) }
y en PRV2PDF.PRG desactivo (comento) la línea

Code: Select all

#define USEGDI
Con estas chapuceras me genera bien el pdf pero con un peso GIGANTE, y no aprovecho la compresión que se haría con HARUPDF o con MSWORD.

Los ejemplos PDFHARU1 y PDFHARU2 funcionan bien.

Llevo tres días con esto y no logro darle la vuelta. La verdad es que fue precisamente por la necesidad de generar los pdf directamente, sin necesidad de recurrir a librerías externas, que actualicé a FWH-19.09, pero lo que genera es, o demasiado grande y buena calidad si le hago las correcciones que indiqué, o de buen tamaño pero pésima calidad si dejo como viene en FWH.

Estoy seguro que es algo que estoy haciendo mal o que me hace falta, pero ya no encuentro por donde más darle palo, así que amigos míos, cualquier ayuda será, como siempre, eternamente agradecida, y prometo que moveré todas mis influencias con el Creador para que les retribuya con creces :D

Un abrazo
Last edited by Cgallegoa on Mon Dec 02, 2019 8:42 pm, edited 1 time in total.
Saludos,

Carlos Gallego

*** FWH-20.07, xHarbour 1.2.3 Build 20190603, Borland C++7.30, PellesC ***
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Problema con PDF en FWH-19.09

Post by karinha »

Com haces, asi?

Code: Select all

FUNCTION IMPRIMIR( DeOndePartiu )

   oImage := ".\LOGO.jpg"

   IF DeOndePartiu = "GERARIMP"

      PRINT oPrn NAME "ORÇAMENTO" PREVIEW MODAL  // DIRECTO

   ELSEIF DeOndePartiu = "GERARPDF"  // GERAR EL PDF

      PRINT oPrn PREVIEW NAME "ORCAM" + ALLTRIM( nProposta )

   ENDIF

   DEFINE FONT oFontRua  NAME "Courier New" SIZE 0, - 10                OF oPrn
   DEFINE FONT oFontMin  NAME "Courier New" SIZE 0, - 10 BOLD           OF oPrn
   DEFINE FONT oFont     NAME "Courier New" SIZE 0, - 12                OF oPrn
   DEFINE FONT oFontBold NAME "Courier New" SIZE 0, - 12 BOLD           OF oPrn
   DEFINE FONT oFontSubl NAME "Courier New" SIZE 0, - 12 BOLD UnderLine OF oPrn
   DEFINE FONT oFontSub2 NAME "Courier New" SIZE 0, - 12 BOLD UnderLine OF oPrn

   //-> Caneta do Preview
   DEFINE PEN oPen1 WIDTH 4 COLOR CLR_BROWN                  OF oPrn
   DEFINE PEN oPen2 WIDTH 2 COLOR CLR_BROWN                  OF oPrn
   DEFINE PEN oPen3 WIDTH 5 COLOR CLR_BLACK                  OF oPrn
 
   oPrn:SetPage( 9 )     //-> A4 //9
   oPrn:SetPortrait()  //-> Vertical(Retrato)

   ResLinha  := oPrn:nLogPixely()/2.54
   ResColuna := oPrn:nLogPixelx()/2.54

   nMargin   := Int( 0.1 * oPrn:nHorzRes() )
   nWidth    := 8 * nMargin
   nColWidth := Int( ( nWidth - nMargin ) / 2 )
   nPagina   := 1

   PAGE

      // LOGO
      nRow        :=   1.50  // Linha
      nCol        := 650.00  // Coluna do Logo.jpg

      @ nRow, nCol PRINT TO oPrn IMAGE "LOGO.JPG" SIZE 650, 650 LASTROW nRow

      nLinha  := 1.00
      nColuna := 18.00

      //-> Pagina
      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                     ;
         OemToAnsi( "P g.: " + ALLTRIM( STRZERO( nPagina, 2 ) ) ), oFont, , ;
         CLR_BLACK, , PAD_CENTER )

      // ETC


   ENDPAGE

   ENDPRINT

   IF DeOndePartiu = "GERARPDF"

      FWSavePreviewToPDF( oPrn )

   ENDIF

   oFont:End()
   oFontBold:End()
   oFontSubl:End()
   oFontMin:End()
   oFontSub2:End()
   oFontRua:End()

   oPen1:End()
   oPen2:End()
   oPen3:End()

RETURN NIL
 
João Santos - São Paulo - Brasil
Cgallegoa
Posts: 335
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: Problema con PDF en FWH-19.09 - Mi GATO lo solucionó !!!

Post by Cgallegoa »

João gracias por tu respuesta, pero te cuento que MI GATO LO RESOLVIO :twisted:

Me levanté un minuto del escritorio, lo que mi gatito aprovechó para subirse en el teclado de mi equipo, y con una de sus paticas jodío una línea de código.

Cuando regresé, sin saber lo que el felino había hecho, compilé, corrií el programa, y funcionó bien!!!!!. Mierda, tengo duendes, fué lo primero que pensé.

Me puse a revisar código y claro, enconré que por una increíble coincidencia la patita del bendito gato se coloco sobre la tecla "/", y el cursor estaba al inicio de una línea, misma que con la "corrección" que me hizo quedó así:

Code: Select all

///////////////////////////////////////////////////////////////////////////////////////////// nRaster := SRCAND := 8913094
Por lo que, la expresion

Code: Select all

oPrn:SayImage( xaCoord[1] , xaCoord[2] , "Soluc02.bmp" , xaCoord[3], xaCoord[4] , nRaster)
que es la que pinta el logo se generó perfecto con un raster en"0"

Ahora mi gato es mi héroe. :D

Ya salen bien los PDF con FWH-19.09

Aunque funciona, creo que algo no está bien pues no debería haber problema con un raster tipo SRCAND,

Los expertos en gráficos y PDF de pronto me pueden orientar un poco.

Gracias nuevamente a todos ustedes y a mi gatito
Saludos,

Carlos Gallego

*** FWH-20.07, xHarbour 1.2.3 Build 20190603, Borland C++7.30, PellesC ***
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Re: Problema con PDF en FWH-19.09 - Mi GATO lo solucionó !!!

Post by Willi Quintana »

Hola amigos,
Mas simple,,,
yo lo hago asi;

ImprimeImp(.f.)
If lCopiasPdf
ImprimeImp(.t.)
EndIf

return Nil

Function ImprimeImp(lPdf)

If !lPdf
PRINTER oPrn To (Impresora)
Else
PRINTER oPrn FILE "PRUEBA.PDF"
EndIf

PAGE

ENDPAGE
ENDPRINT
Cgallegoa
Posts: 335
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: Problema con PDF en FWH-19.09 - Mi GATO lo solucionó !!!

Post by Cgallegoa »

Willi, gracias por tu interés.

Ya lo solucioné. Incompatibilidad en la function AnsiToWide de xXarbour:

En PRV2PDF se invoca la función Emf2Jpeg() la cual a su vez hace un llamado a GDIPLUSEMFTOJPG de la siguiente manera:

Code: Select all

GDIPLUSEMFTOJPG( cBuf, Len( cBuf ), AnsiToWide( cJpeg ), 5 )
Esa línea estaba generando en forma aleatoria una extensión errada al archivo jpg sobre el cual se contruye el pdf. Despues de la extensión agregaba caracteres extraños (posiblemente chino).

Lo solucioné con el siguiente cambio:

Code: Select all

GDIPLUSEMFTOJPG( cBuf, Len( cBuf ), AnsiToWide( cJpeg + Chr(0) ), 5 )
Aparentemente funciona perfecto.

Una abrazo,
Saludos,

Carlos Gallego

*** FWH-20.07, xHarbour 1.2.3 Build 20190603, Borland C++7.30, PellesC ***
Post Reply