"Any ideas?" is the most frequently-asked question in technical forums. My answer is: yes.

Regarding PDFListener and SP2

A small clarification is obviously in order, because a couple of people have asked me when I'm "releasing" the SP2 version of PDFListener, to go with the changes I've made in RunReports.

The answer is: there is nothing I need to release. The code in PDFListener.PRG looks like this:


             FFC_HOME + "_reportlistener.vcx"

#DEFINE CLASS PDFListener AS utilityReportListener ;


... If you re-compile PDFListener.PRG with an SP2 copy of _reportlistener.vcx, you get the SP2 improvements.

The latest version of the PDFListener source is here:, but I haven’t changed anything in that source zip except for adding a non-VFP 9 version of the facility (PDFClass.PRG), as I explained when I posted the article (

PDFClass does not descend from any reportlistener class, and it is the code I used in earlier versions of FoxPro. In fact, I have used similar code, all the way back to FoxPro DOS. (I think I refactored the code for OOP around VFP 5.)

I have not made the equivalent changes in PDFClass.PRG to improve its exposure of page numbers because PDFClass does not even have a pages array. I suppose I could add one, but there isn't much point. By definition, PDFClass doesn't need to consider a report run with mixed old-style and new-style syntax, or chained reports.