Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
PDF
Message
 
 
To
13/02/2001 13:33:12
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Title:
Re: PDF
Miscellaneous
Thread ID:
00475389
Message ID:
00475413
Views:
37
>I know that VFP reports can be generated as a PDF file by printing directly to the PDFWriter printer driver. This requires a full license of Adobe Acrobat. Would this be the correct syntax?
>
>REPORT FORM &curdrive\buydown\invoice NOCONSOLE TO FILE testreport.pdf
>
>Are there any other simple methods to output a VFP report so that the user can send a copy via email?
>
>Thanks in advance for your suggestions.

Hi Pamela,

First of all, I didn't write the original code, it was Houston Brennan. I just used this code and since I didn't find any problems with it, I spreaded it in UT world :) So, I can't take the honor, I didn't deserve :)

Also there is Rick Strahl class, which achieves the same functionality, but the code in it is much more complicated.
*******************************************************************************
*  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 06/16/2000 10:56:51 AM
******************************************************************************
lparameters tcFileName
if empty(tcFileName)
     tcFileName='c:\windows\temp\tempfile.pdf' && Hardcoded name
endif

local cPDFDllFile, lcOldSafety, iInitialise, iIsNT, ;
     cPdfWriter, cPort, iInstalled, iDoPrompt, iSetFileName

lcOldSafety=set('safety')
cPDFDllFile = "c:\Program Files\Adobe\Acrobat 4.0\Macros\Office95\PDFMon.DLL" && or locate this DLL

if not file(cPDFDllFile)
     =messagebox("Required Acrobat Writer DLL is not present on your local drive." +;
          chr(13)+"Will print to default printer...")
     return .t.
endif

clear dlls
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)

iInitialise = PDFMonInitialize()
*? "Initialise : "
*?? iInitialise

iIsNT = PDFMonIsOSNT()
*? "Is NT : "
*?? iIsNT
set safety off
cPdfWriter = space(100)
cPort = space(100)
iInstalled = IsPDFWriterInstalled( @cPdfWriter, @cPort )
if 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(tcFileName)
*? iSetFileName
*!*     tcFileName = ""
*!*     iSetFileName = PDFMonSetOutputFilename(tcFileName)
*!*     ? iSetFileName

*? PDFMonCleanup()
clear dlls
if lcOldSafety='ON'
     set safety on
endif
*? "Finished."
return .t.
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform