set printer to name "Acrobat PDFWriter" >report form myReport to file "pdfTest." noconsole>
******************************************************************************* * Description.......: CreatePDF - creates PDF for specified filename * Calling Samples...: CreatePDF('c:\temp\temp.pdf') * Parameter List....: tcFileName * Created by........: Houston Brennan 06/12/2000 * Modified by.......: Nadya Nosonovsky 01/23/2002 12:35:21 PM ****************************************************************************** lparameters tcFileName if vartype(m.tcFileName)<>"C" or empty(m.tcFileName) tcFileName='c:\windows\temp\tempfile.pdf' && Hardcoded name else tcFileName=forceext(m.tcFileName,"PDF") endif if file(m.tcFileName) local lnHandle lnHandle = fopen(m.tcFileName,12) if m.lnHandle > 0 and fclose(m.lnHandle) delete file (m.tcFileName) flush else =messagebox('File '+ m.tcFileName+' is opened right now, so it could not be created...',48,'File is opened...') return .f. endif endif set printer to default && restore default settings for the printer first declare _fpreset in msvcrt20.dll =_fpreset() declare integer Sleep in Win32API integer Sleep(100) && Wait a little local cPDFDllFile, lcOldSafety, iInitialize, iIsNT, ; cPdfWriter, cPort, iInstalled, iDoPrompt, iSetFileName cPDFDllFile = "c:\Program Files\Adobe\Acrobat 4.0\Macros\Office95\PDFMon.DLL" && or locate this DLL if not file(m.cPDFDllFile) if messagebox("Required Acrobat Writer DLL is not present on your local drive." + ; chr(13)+"Do you want to print to default printer?",36,"Error in CreatePDF")=6 return .t. else return .f. endif endif declare integer PDFMonInitialize in (cPDFDllFile) declare integer PDFMonIsOSNT in (cPDFDllFile) declare integer IsPDFWriterInstalled in (cPDFDllFile) ; string@ cPDFWriterName , ; string@ cPort declare integer PDFMonDoPrompt in (cPDFDllFile) ; integer iWhichProgram declare integer PDFMonSetPrompt in (cPDFDllFile) ; integer iWhichProgram , ; integer iNewValue #define SETPROMPTOFF 0 #define SETPROMPTON 1 declare integer PDFMonSetOutputFilename in (cPDFDllFile) ; string cFileName declare integer PDFMonCleanup in (cPDFDllFile) *PDFMonCleanup() iInitialize = PDFMonInitialize() if m.iInitialize=1 *? "Initialize : " *?? iInitialize *iIsNT = PDFMonIsOSNT() *? "Is NT : " *?? iIsNT lcOldSafety=set('safety') set safety off && don't want to be prompted cPdfWriter = space(100) cPort = space(100) iInstalled = IsPDFWriterInstalled(@cPdfWriter, @cPort) if m.iInstalled=1 && PDF Writer is installed set printer to name 'Acrobat PDFWriter' endif *? "Installed " *?? iInstalled *? "PDF Writer : " *?? cPdfWriter *? "Port : " *?? cPort *? iDoPrompt = PDFMonDoPrompt(SETPROMPTOFF) *? iDoPrompt *cFileName = "c:\Temp\Test.Pdf" iSetFileName = PDFMonSetOutputFilename(m.tcFileName) *? iSetFileName *!* tcFileName = "" *!* iSetFileName = PDFMonSetOutputFilename(tcFileName) *!* ? iSetFileName PDFMonCleanup() else if messagebox("Adobe Acrobat Write could not be initialized. "+ ; chr(13)+"Do you want to print to default printer?",36,"Error in CreatePDF") =7 return .f. && They don't want to print endif endif if m.lcOldSafety='ON' set safety on endif *? "Finished." return .t.As you see, it doesn't use report form command at all, but just does some manipulations with the Adobe to set name to be produced correctly.