Language Support for xHarbour / Five Win Harbour

To use the Image to PDF DLL with xHarbour / Five Win Harbour you can use the more direct method of calling the DLL APIs as shown below in the code snippet (kindly provided by Vilian F. Arraes of Vfatec Sistemas):

GLOBAL hLib

#INCLUDE "FiveWin.ch"

FUNCTION Start( )
   MakePdf({"test.emf"}, "test.pdf")
RETURN NIL

FUNCTION MakePDF( aFiles, pdfFilename )
LOCAL imageFilename := "   ", ix, iErr := 0, errorText := "  "
   hLib := LoadLib32( "Image2PDF StdCall.DLL" )

   iErr := I2PDF_License( "YOUR LICENSE CODE HERE" )

   // ensure that any EMF files are converted at highest quality
   iErr := I2PDF_MetaToNativePDF( )
   iErr := I2PDF_UseEMFDeviceSize( )
   iErr := I2PDF_SetDPI(0) // Set PDF DPI to the same as the image

   // Build the pages using the array of image files
   FOR ix := 1 TO LEN( aFiles )
      imageFilename := aFiles[ix]
      IF (iErr := I2PDF_AddImage(imageFilename)) # 0
         EXIT
      ENDIF
   NEXT

   // Create the PDF.
   iErr := I2PDF_MakePDF(Rtrim(pdfFilename), 0, errorText, 40 )

   FreeLib32( hLib )
RETURN( pdfFilename )

// DLL API proptotypes
DLL32 STATIC FUNCTION I2PDF_License( cLicCode AS LPSTR) AS LONG;
   PASCAL FROM "I2PDF_License" LIB hLib

DLL32 STATIC FUNCTION I2PDF_MetaToNativePDF( ) AS LONG;
   PASCAL FROM "I2PDF_MetaToNativePDF" LIB hLib

DLL32 STATIC FUNCTION I2PDF_UseEMFDeviceSize( ) AS LONG;
   PASCAL FROM "I2PDF_UseEMFDeviceSize" LIB hLib

DLL32 STATIC FUNCTION I2PDF_AddImage( cImage AS LPSTR ) AS LONG;
   PASCAL FROM "I2PDF_AddImage" LIB hLib

DLL32 STATIC FUNCTION I2PDF_SetDPI( nDpi AS LONG ) AS LONG;
   PASCAL FROM "I2PDF_SetDPI" LIB hLib

DLL32 STATIC FUNCTION I2PDF_MakePDF( cOutFile AS LPSTR, nOptions AS LONG, cErrTxt AS LPSTR, nMaxESize AS LONG ) AS LONG;
   PASCAL FROM "I2PDF_MakePDF" LIB hLib

Note: The above uses the "Image2PDF StdCall.dll" which uses the stdcall or Pascal calling convention.