empezando con easyPreview

Post Reply
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

empezando con easyPreview

Post by mastintin »

El siguiente paso es enlazar el easypreview ...
Me pide un archivo que se llama wpdf.h que no viene en el código

He retocado algunos errores :

En Epmeta.prg he retocado el codigo de estas funciones para quitar los errores .

Code: Select all



#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

HB_FUNC(EP_PLAYENHMETAFILE)

{
 RECT rect;
 HENHMETAFILE  hemf =(HENHMETAFILE) hb_parnl( 2 );
 HDC           hDC  = ( HDC ) hb_parnl( 1 );

// GetEnhMetaFileHeader( hemf, sizeof( mh ), &mh ) ;

   if( hb_parl( 4 ) )
   {
      rect.left = 0;
      rect.top  = 0;
      rect.right  = GetDeviceCaps( ( HDC ) hb_parnl( 1 ), HORZRES );
      rect.bottom = GetDeviceCaps( ( HDC ) hb_parnl( 1 ), VERTRES );
   }
   else
   if (HB_IS_ARRAY(3))
     {
       rect.left   = hb_parvni( 3, 1 );
       rect.top    = hb_parvni( 3, 2 );
       rect.right  = hb_parvni( 3, 3 );
       rect.bottom = hb_parvni( 3, 4 );
     }
   else
 //     GetClientRect( WindowFromDC( hDC ), &rc );
      GetClientRect ( (HWND)hb_parnl( 3 ), &rect );
 hb_retl( PlayEnhMetaFile( hDC, hemf, ( LPRECT ) &rect ) );
}
//------------------  ------------------------//
HB_FUNC(ENHMETASIZE)
{
   HENHMETAFILE hemf = (HENHMETAFILE) hb_parnl( 1 );
   INT  sizetyp      =  hb_parni( 2 );
   ENHMETAHEADER mh ;
   RECTL rect ;

   GetEnhMetaFileHeader( hemf, sizeof( mh ), &mh ) ;

   if (sizetyp == 1 )     // Size in Pixel
      rect = mh.rclBounds ;
   else
      rect = mh.rclFrame ;  //Size in 0.1 mm

   hb_reta( 4 );
   hb_storvni(rect.left  , -1, 1 );
   hb_storvni(rect.top   , -1, 2 );
   hb_storvni(rect.right , -1, 3 );
   hb_storvni(rect.bottom, -1, 4 );
}
//------------------  ------------------------//
 
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: empezando con easyPreview

Post by mastintin »

He subido al repositorio de easypreview un archivo wpdf.h por si alguien lo quiere , supongo que es el que necesitamos .
Ahora me lanza 12 errores al compilar wpdf.c ...
Saludos a todos.
User avatar
lucasdebeltran
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am
Contact:

Re: empezando con easyPreview

Post by lucasdebeltran »

Manuel,

Ese código no es necesario y es del módulo nativo de EasyPreview para exportar en PDF.

Edita epreview.prg y cambia el nombre de la función rpreview a otro. Entonces la función de preview del diseñador usara el de Fivewin. Prueba.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: empezando con easyPreview

Post by mastintin »

lucasdebeltran wrote:Manuel,

Ese código no es necesario y es del módulo nativo de EasyPreview para exportar en PDF.

Edita epreview.prg y cambia el nombre de la función rpreview a otro. Entonces la función de preview del diseñador usara el de Fivewin. Prueba.
Pues no resuelve el tema :-) .
Al dar a imprimir en easyreport tenemos 2 opciones o llamar a otro exe llamado "ERSTART.EXE" y ejecutarlo ( el cual también tendremos que reconstruir ) o usar la clase epreview ( epclass.prg ) si enlazo este prg es cuando empieza a encadenar llamadas a tpdf , a mypdf , etc ... solo con el cambio de rpreview no resolvemos .
Gracias por la ayuda .... seguiremos investigando .
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: empezando con easyPreview

Post by cnavarro »

A ver si ayuda, independientemente de lo que comenta Lucas

Code: Select all

#define IPT_SELECT        0x000 // 
#define IPT_WMF           0x001 // Windows-Metafile
#define IPT_DXF           0x002 // AUTOCAD DXF-
#define IPT_EPS           0x004 // Encapsulated PostScript EPS
#define IPT_BMP           0x008 // Windows-Bitmapfile
#define IPT_TIF           0x010 // TIFF 5.0
#define IPT_GIF           0x020 // Compuserve GIF
#define IPT_PCX           0x040 // PCX
#define IPT_JPG           0x080 // JPEG-File
#define IPT_PNG           0x100 // PNG (Portable network Graphic)
#define IPT_EMF           0x200 // EMF (Enhanced Windows MetaFile)
#define IPT_JPC          0x1000 // JPEG-2000 Code Stream Syntax (ISO/IEC 15444-1)
#define IPT_JP2          0x2000 // JPEG-2000 JP2 File Format Syntax (ISO/IEC 15444-1)
#define IPT_PGX          0x4000 // JPEG-2000 VM Format
#define IPT_RAS          0x8000 // Sun Rasterfile (RAS)
#define IPT_PNM         0x10000 // Portable Anymap (Graymap/Pixmap/Bitmap) (PNM, PGM, PPM)

#define IPT_FLT           0x800 // 

#define IPE_OK             0    // 

#define IPE_ABORT          1    // 
#define IPE_WRONGTYPE      2    // 
#define IPE_CORRUPTED      3    // 

#define IPE_CLOSE          4    // 
#define IPE_OPEN           5    // 
#define IPE_WRITE          6    // 
#define IPE_EOF            7    // 
#define IPE_NOMEM          8    // 
#define IPE_UNSUPPORTED    9    // 

#define IPE_MAX256        10    // 
#define IPE_REENTERED     11    //

#define IPE_PARAM         12    // 
#define IPE_ERRINFLT      13    //
#define IPE_ERRNOFLT      14    // 
#define IPE_ERRTEXTFLT    15    //
#define IPE_NOLICENSE     16    // 

#define IPE_LAST          32    // 

#define IPF_MSGBOX                   0x1L // 
#define IPF_DIB                      0x8L // 
#define IPF_META                    0x10L // 
#define IPF_ENH                    0x800L // 
#define IPF_COMPRESS                 0x2L // 

#define IPF_TIFF_APPEND         0x200000L // TIFF-Write: Append Page to existing TIF file.

#define IPF_TIFF_COMPMETHOD     0x300000e0 // TIFF-Write Compression Modes
#define IPF_TIFF_NOCOMP         0x00000020 // TIFF-Write: Uncompressed
#define IPF_TIFF_LZW            0x00000040 // TIFF-Write: LZW
#define IPF_TIFF_CCITTRLE       0x00000060 // TIFF-Write: CCITT 
#define IPF_TIFF_CCITTFAX3      0x00000080 // TIFF-Write: CCITT G3 Fax Compression
#define IPF_TIFF_CCITTFAX4      0x000000a0 // TIFF-Write: CCITT G4 Fax Compression
#define IPF_TIFF_PACKBITS       0x000000c0 // TIFF-Write: PACKBITS
#define IPF_TIFF_JPEG           0x000000e0 // TIFF-Write: JPEG
#define IPF_TIFF_DEFLATE        0x10000000 // TIFF-Write: Deflate (zlib)

#define IPF_QUALITY               0xF000L // JPEG- 0x1000: 0x9000 
#define IPF_LOWQUALITY            0x3000L // JPEG
#define IPF_INTERLACED           0x10000L // PNG/GIF-Write: Write in interlaced Mode
#define IPF_PNG_INTERLACED       IPF_INTERLACED // Obsolete

#define IPF_FILEDIALOG               0x4L // 

#define IPF_NOPROGRESSBAR          0x100L // 
#define IPF_NOWAIT                 IPF_NOPROGRESSBAR // 
#define IPF_NOWARNINGS             0x200L // 
#define IPF_ALLOWLZW               0x400L // 

#define IPF_ZLIB_MASK              0xc0000000
#define IPF_ZLIB_DEFAULT_COMPRESSION 0x00000000  // Medium Speed, Medium compression rate for Deflate-Algorithm
#define IPF_ZLIB_BEST_SPEED        0x40000000  // High Speed, Low compression rate for Deflate-Algorithm
#define IPF_ZLIB_BEST_COMPRESSION  0xc0000000  // Low Speed, High compression rate for Deflate-Algorithm


#define IPF_UNUSED                 0x0fde0000  // IPF_xxxx Bits, 

//------------------- Flags for DXF-Import -----------------------
#define IPDXF_BLACKONLY            0x00000001L // Import all DXF-Elements as black
#define IPDXF_IGNOREEXTMINMAX      0x00000002L // 
#define IPDXF_EXTENDED             0x00000004L // 

//------------------- Flags for Import DIB-Type selection --------
#  define IPDIBF_IMPORT_32BIT       0x00020000L// 
#  define IPDIBF_ALLOW_IMPORT_CMYK  0x00080000L//
#  define IPDIBF_ALLOW_IMPORT_48BIT 0x00100000L// 
#  define IPDIBF_ALLOW_IMPORT_RGBA  0x00400000L// 
#define IPDIBF_NORMALIZE            0x00800000L// 

#define IPM_WARNING 1
#define IPM_ERROR   2


 
Este es el fichero que he construido
https://navarro_cristobal@bitbucket.org ... iew_n1.git (en descargas)

A partir de lo que he encontrado en:
http://www.herdsoft.com/ftp/downloads.html#davinci
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
lucasdebeltran
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am
Contact:

Re: empezando con easyPreview

Post by lucasdebeltran »

Manuel,

Acabo de actualizar del repositorio y sin hacer nada me sale correctamente el Print/Preview:
Image

Y he visto que en source\easyprev.prg rpreview() está comentada a ER_Preview().

Lo que si salen diversos warnings al compilar.


Es más, si suprimes del make EasyReport #easyprev.prg.

Y de source\ereport.prg y source\erstart.prg estás llamadas:

Code: Select all

   
//EP_TidyUp()
   //EP_LinkedToApp()
   //EP_SetPath( ".\" )

Todo funciona sin problemas.


La clase de impresión de los Reportes es Vrd; source\vrd.prg y el comando es:

EASYREPORT <oVRD> ;
NAME <cRptFile> ;
[ PREVIEW <lPreview> ] ;
[ TO <cPrinter> ] ;
[ OF <oWnd> ] ;
[ <lModal: MODAL> ] ;
[ <lPrintIDs: PRINTIDS> ] ;
[ <lNoPrint: NOPRINT> ] ;
[ <lNoExpr: NOEXPR> ] ;
[ CHECK <lCheck> ] ;
[ AREAPATH <cAreaPath> ] ;
[ PRINTDIALOG <lPrDialog> ] ;
[ COPIES <nCopies> ] ;
[ PRINTOBJECT <oPrn> ] ;
[ PAPERSIZE <aSize> ] ;
[ TITLE <cTitle> ] ;
[ PREVIEWDIR <cPrevDir> ] ;
[ AUTOPAGEBREAK <lAutoBreak> ] ;
[ SHOWINFO <lShowInfo> ] ;

Por defecto, usa el preview de Fivewin.


Respecto a EasyPreview, actualmente el Preview de Fivewin hace lo mismo y más cosas. El código fuente de Timm podría ser interesante por si las correcciones a la generación de los MetaFiles son interesantes y, sobre todo, porque generaba PDFS de forma nativa. Como yo no se C no puedo valorar la calidad de tal código.

Ah, y muchas gracias por el esfuerzo que estáis haciendo.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: empezando con easyPreview

Post by mastintin »

lucasdebeltran wrote:Manuel,
Acabo de actualizar del repositorio y sin hacer nada me sale correctamente el Print/Preview:
Efectivamente son los _ que se han hecho para que funcione "de urgencia" , y se pueda utilizar e ir reportando errores . Aun faltan muchas cosas que se han comentado y mucho código que se esta enlazando que sobra , también código que mirar por si es interesante para mejorar el producto , pero ya parece que funciona, eso si, no totalmente estable .
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: empezando con easyPreview

Post by Antonio Linares »

Manuel,

Sencillamente espectacular :-) Mi mas sincera enhorabuena!

Esta mañana pude dedicarle un rato, luego ya tuve que marcharme para hacer cosas, la familia, etc. y cuando he regresado ahora y lo he visto, me he quedado realmente asombrado!

Ahora falta entender como lo has hecho. Si nos explicases un poco cual ha sido la estrategia para incluirlo y hacerlo funcionar, seguro que muchos te lo agradeceríamos :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: empezando con easyPreview

Post by mastintin »

Realmente no he tenido que modificar demasiadas cosas , he renombrado la función de Tim Rpreview a ER_rpreview() ( nos sobra realmente ) , he enlazado los módulos necesarios y comentado las funciones que daban error para mas adelante revisarlas , ahora mismo sobra mucho código que se ha enlazado y alguno falla , he pasado dialogos no modales a modales de momento ( se ve que en el desarrollo inicial estaban en modal y quedaron a medias en el desarrollo de Tim ) .
Falta algo de trabajo y el programa aún rompe en ocasiones , pero amenos se puede usar .
Saludos a todos.
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: empezando con easyPreview

Post by cnavarro »

Si os habéis fijado, una vez lanzado el preview de un report, se puede volver a pulsar el boton "Imprimir" por lo que te crea otra ventana (por el tema de ser MdiChild) con otra previsualizacion del mismo reporte
Una vez lanzado la previsualizacion del report habria que desactivar el boton imprimir y preview
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Post Reply