Print to a file using reports: Difference between revisions

From DataFlex Wiki
Jump to navigationJump to search
No edit summary
Line 1: Line 1:
How can I print directly to a file such as PDF or Postscript?
How can I print directly to a file such as PDF or Postscript?
==== Using capabilities of your report engine ====
Some report engines that are often used with Visual DataFlex have native support for generating the report as a file using the PDF format.
Examples are:
#Crystal Reports can save a report to a PDF file
#VPE has this capability
#List&Label includes a PDF engine


==== Using WinPDF Pro ====
==== Using WinPDF Pro ====
Line 79: Line 86:


http://groups.google.com/group/microsoft.public.dotnet.framework.drawing/browse_thread/thread/66e5f32dd0fc1757
http://groups.google.com/group/microsoft.public.dotnet.framework.drawing/browse_thread/thread/66e5f32dd0fc1757
====Using Acrobat====
Acrobat Reader is the original product for reading PDF documents.
The product for creating PDF documents is distiller.
If you want to use the Reader component to print an existing document, then beware that it has been reported that the activeX control doesn't get properly released from memory. Last version that did this properly was version 4.
Unfortunately newer versions are getting more bloated with each release.
====Using xpdf====
On http://www.glyphandcog.com you can find the xpdfprint component.
The xpdf engine is one of the more common ways of rendering your PDF documents on unix/linux environment.


====External Links====
====External Links====
[http://www.sture.dk/wasp/threadreport.asp?ThreadId=40911 OT: Print to a File]
[http://www.sture.dk/wasp/threadreport.asp?ThreadId=40911 OT: Print to a File]
[http://www.planetpdf.com Lot's of PDF information]

Revision as of 11:52, 24 April 2008

How can I print directly to a file such as PDF or Postscript?

Using capabilities of your report engine

Some report engines that are often used with Visual DataFlex have native support for generating the report as a file using the PDF format. Examples are:

  1. Crystal Reports can save a report to a PDF file
  2. VPE has this capability
  3. List&Label includes a PDF engine

Using WinPDF Pro

The example below uses WinPDF Pro printer driver for the PDF generation, Winprint (or at least the report object in VDF) for the reporting and MAPI for sending the mails directly. Note that each invoice in this example is printed individually.

Pardon the jumbled looking code, but with Win2PDF pro you can do the following:

function JumpStartReport string sInvoice boolean bEmail string sEmailAddress returns boolean
   boolean bExists bMailed
   integer iToPrinter iRepObj iHr iMn iRetval
   string  sVal sDateTime sHr sMn sSetupFile sPath sFilename
   string  sKey sSubKey sOldRegRoot sOldRegBranch sCurrentDevice sMessage
   handle  hoMapiSession
   dWord   dWWSecurityOptions  dWWFileOptions dRetVal
   date    dToday
   //
   get Report_Object_Id To iRepObj
   //
   set pSelStart1 of iRepObj To sInvoice
   set pSelStop1  of iRepObj To sInvoice
   //
   if (bEmail) ;
       set OutPut_Device_Mode to PRINT_TO_PRINTER_NO_DIALOG
   else        ;
       set OutPut_Device_Mode to PRINT_TO_PRINTER
   //
   if (bEmail) begin
       move ("Please find attached your invoice" * sInvoice + ".") to sMessage
       get  DFGetCurrentDevice of iRepObj to sCurrentDevice
       send DFSetDevice        of iRepObj    "Win2PDF"
       //
       get psHome of (phoWorkspace(ghoApplication))          to sPath
       move (sPath + "Documents\")                           to sPath
       move ("Invoice_" + sInvoice + ".pdf")                 to sFilename
       Get_Registry_Root                                     to sOldRegRoot sOldRegBranch
       move "Dane Prairie Systems"                           to sKey
       move "Win2PDF"                                        to sSubKey
       Set_Registry_Root                                     to HKEY_LOCAL_MACHINE "SOFTWARE"
       Set_Foreign_Profile_String sKey sSubKey "PDFFileName" to (sPath + sFilename)
       Set_Foreign_Profile_String sKey sSubKey "PDFTitle"    to ("Invoice " + sInvoice)
       Set_Foreign_Profile_String sKey sSubKey "PDFAuthor"   to "Calendar Invoicing"
       Set_Foreign_Profile_String sKey sSubKey "PDFSubject"  to ("Calendar Invoice")
       Set_Registry_Root                                     to sOldRegRoot sOldRegBranch
       //Get CheckFileExists sFileName to bExists
       //If (bExists) Set pbOrgCopyPrinted to TRUE
   end // if (bEmail) begin
   //
   send Run_Report to iRepObj
   //
   if (NOT(bEmail)) procedure_return
   // restore the print device
   send DFSetDevice of iRepObj sCurrentDevice
   // gotta have it
   move oMapiSession to hoMapiSession
   //showln hoMapiSession
   if (NOT(hoMapiSession > 0)) begin
       send Stop_Box "Unable to email invoice."
       procedure_return
   end
   send DoInit          of hoMapiSession
   set psMessageSubject of hoMapiSession to ("Daffie Duck Invoice" * sInvoice)
   set psMessageText    of hoMapiSession to sMessage
   send DoAddReceiver   of hoMapiSession MAPI_TO (trim(sEmailAddress)) "" "" 0
   send DoAddAttachment of hoMapiSession (sPath + sFilename) sFilename
   get Logon            of hoMapiSession "" "" 0 to iRetval
   //showln iRetval
   get SendMail         of hoMapiSession (MAPI_NEW_SESSION IOR MAPI_LOGON_UI) TRUE to iRetval
   //
   showln (sInvoice * trim(sEmailAddress) * string(iRetval))
   move (iRetval = 0) to bMailed
   //
   get Logoff           of hoMapiSession to iRetval
   //
   function_return bMailed
end_function // JumpStartReport

Using VB.net

Not VDF code, but a VB.net code sample that you can use to model against (or use it by wrapping it in a small .net binary)

http://groups.google.com/group/microsoft.public.dotnet.framework.drawing/browse_thread/thread/66e5f32dd0fc1757

Using Acrobat

Acrobat Reader is the original product for reading PDF documents. The product for creating PDF documents is distiller.

If you want to use the Reader component to print an existing document, then beware that it has been reported that the activeX control doesn't get properly released from memory. Last version that did this properly was version 4. Unfortunately newer versions are getting more bloated with each release.

Using xpdf

On http://www.glyphandcog.com you can find the xpdfprint component. The xpdf engine is one of the more common ways of rendering your PDF documents on unix/linux environment.

External Links

OT: Print to a File Lot's of PDF information