> >Clear All > >Set Default To c:\foxpro9\ppdauto > >*ghostscript must be called in this row > >*!* 1.gsapi_new_instance >*!* 2.gsapi_init_with_args >*!* 3.gsapi_exit >*!* 4.gsapi_delete_instance > >Declare Long gsapi_new_instance In gsdll32.Dll Long @, Long >Declare Long gsapi_delete_instance In gsdll32.Dll Long >Declare Long gsapi_init_with_args In gsdll32.Dll Long, Long, Long >Declare Long gsapi_exit In gsdll32.Dll Long > > >Store 0 To lnGsinstancehandle, lnCallerhandle, lnElementcount, lnCounter, lnReturn, lnGsinstancehandle, params, lhMemory > >lnReturn = gsapi_new_instance(@lnGsinstancehandle,@lnCallerhandle) > >If lnReturn = 0 && Succsess > tcFileout = "-tiffg4-%03d.tif" > tcFilein = "new.pdf" > > > Dimension laArgs[6] > laArgs[1] = "dummy" > laArgs[2] = "-dBATCH" > laArgs[3] = "-r"+"600X600" > laArgs[4] = "-sDEVICE=tiffg4" > laArgs[5] = "-sOutputFile="+tcFileout > laArgs[6] = tcFilein > > > > lnPtr = VFP2BinArray(@laArgs,@params,@lhMemory) > > > > lnReturn = gsapi_init_with_args(lnGsinstancehandle,lnPtr,params) > > > > SET STEP on > > > > * WAIT WINDOW lnPtr > > > > > > >* WAIT WINDOW lnreturn > gsapi_exit(lnGsinstancehandle) > gsapi_delete_instance(lnGsinstancehandle) > > LocalFree(lhMemory) > > > >Endif > > > > > >Wait Window lnReturn > > >Function VFP2BinArray(taData, tqBinArray, thMem) >***************************************************** >** Converts a VFP array of strings into an array of string pointers for >** for passing to API functions >** >** Parameter: >** taData - The array of VFP strings, passed by reference >** tqBinArray - (out)The array of pointers, in VarBinary format to pass >** to the API function, passed by reference >** thMem - (out)The memory buffer to hold the string values, passed by >** reference. This memory must be freed manually using the >** LocalFree API function. >** >** Returns: Numeric - the number of strings placed into the binary array >***************************************************** > >Local lhBuffer, lhPos >Local lqBinArray, lnArrayCnt >Local lnDataLen >Declare Long LocalAlloc In WIN32API Long uFlags, Long uBytes >Declare Long LocalFree In WIN32API Long Hmem > >lnArrayCnt = 0 >lqBinArray = 0h > >Try >** Get the total length for the character data > lnDataLen = 0 > For lnLoop = 1 To Alen(taData) >** Add 1 byte to each string length for the NULL terminator > lnDataLen = lnDataLen + Len(taData[lnLoop])+1 > Endfor > >** Allocate memory buffer > lhBuffer = LocalAlloc(0x0040,lnDataLen) > >** Stuff character data into buffer > lhPos = lhBuffer > For lnLoop = 1 To Alen(taData) >** Stuff string into buffered memory > Sys(2600, lhPos, Len(taData[lnLoop])+1, taData[lnLoop]+Chr(0)) >** Add position to binary array > lqBinArray = lqBinArray + BinToC(lhPos,"4rs") >** Increase our position pointer > lhPos = lhPos + Len(taData[lnLoop])+1 >** Increase Array count > lnArrayCnt = lnArrayCnt + 1 > Endfor >Catch To loExc > Throw >Finally > If lnArrayCnt > 0 > tqBinArray = lqBinArray > thMem = lhBuffer > Else > If lhBuffer <> 0 > LocalFree(lhBuffer) > Endif > Endif >Endtry > >Return lnArrayCnt > >