From:             markem at airmail dot net
Operating system: Windows XP
PHP version:      5.2.6
PHP Bug Type:     PDF related
Bug description:  MySQL/PDF clash

Description:
------------
I'm unsure if I have the actual cause - but....

I'm working on a large report.  They would like for it to be in PDF.  So
I'm using PDFLIB.  If all of the code is together - the PDF is generated
with no problems.  Unfortunately, between the pdf_new() and then other pdf
commands there is an SQL call to MySQL.  When that is finished the error I
get back is:

PHP Fatal error:  Uncaught exception 'PDFlibException' with message
'pdf_open_file(): 6 is not a valid pdf object resource'

The #6 is the resource ID (if I put in echo statements to print out $myPDF
it prints "6") of the PDF document.  So it is like PHP is closing out the
PDF document (or maybe just dumping the resource info).

Reproduce code:
---------------
        $myPDF = pdf_new();
        pdf_open_file( $myPDF, "" );                        #   We use a
"" if the output is coming
        pdf_begin_page( $myPDF, 11 * 72, 8.5 * 72 );        #   Paper
resolution is 72dpi.  Always use inches.
        pdf_translate( $myPDF, 0, 8.5 * 72 );               #   Translate
where the origin is to the top-left.
        pdf_scale( $myPDF, 1, -1 );                     #   Rescale
everything.
        pdf_set_value( $myPDF, "horizscaling", -100 );  #   Set the
horizontal scaling to -100%.

        $font = pdf_load_font( $myPDF, "Helvetica","iso8859-1", "" );
        if( $font ){ pdf_setfont( $myPDF, $font, -18.0 ); }

        $theString = "Palliative and Supportive Care Inpatient | Consult
List";

        pdf_show_boxed( $myPDF, $theString, 20, 50, 500, 20, "center", ""
);
        pdf_setcolor( $myPDF, "fill", "rgb", 0.9, 0.9, 0.9, 0.0 );
        pdf_rect( $myPDF, 20, 50, 300, 20 );
        pdf_fill_stroke( $myPDF );

        pdf_end_page( $myPDF );
        pdf_set_parameter( $myPDF, "openaction", "fitpage" );
        pdf_close( $myPDF );

        $buf = pdf_get_buffer( $myPDF );
        $len = strlen( $buf );
        header( "Content-Type:application/pdf" );
        header( "Content-Length:$len" );
        header( "Content-Disposition:inline; filename=DailyRpt.pdf" );
        echo $buf;
        pdf_delete( $myPDF );

Expected result:
----------------
The above code works so long as it is all together.  I get a single PDF
page which reads "Palliative and Supportive Care Inpatient | Consult List".

Actual result:
--------------
However, if an SQL command is sent to the database between the "pdf_new()"
and the "pdf_open_file()" commands, no PDF document is generated and Apache
gives the above error.

Example SQL command:
    $sql = <<<END_OF_SQL
SELECT  distinct B.VISIT_TYPE, B.Patient_class, A.LAST_NAME,
A.FIRST_NAME,
    A.MIDDLE_NAME, A.MRN, B.PC_MD, B.PC_FELLOW, B.PC_NP, B.ROOM,
    to_char( B.PC_ADMISSION_DATE, 'MM/DD/YYYY') as  VISITS_DATE,
B.CONSULTING_MD,
    A.DOB, B.VISITID, B.PRK, B.PC_NP, N.LAST_NAME AS PC_FELLOW_LN,
    N.FIRST_NAME AS PC_FELLOW_FN, O.LAST_NAME AS PC_NP_LN, O.FIRST_NAME AS
PC_NP_FN,
    B.VISITID, B.PRK, to_char( A.DOB, 'MM/DD/YYYY') AS ADOB,
    P.Last_Name as CONSULTING_MD_LAST_NAME, P.HOSPITAL_SERVICE_CD,
B.VISIT_COMMENT
        FROM  Patients_VW A, Visits B, PALLIATIVE_PATIENTS L, EMPLOYEES_VW
N, EMPLOYEES_VW O, PHYSICIANS_VW P
        WHERE  B.Care_Discharged_Date IS NULL
            AND  ( B.Patient_class = 1  OR  B.Patient_class = 5 )
            AND  B.PC_FELLOW = N.EMPLID( + )
            AND  B.PC_NP = O.EMPLID( + )
            AND  B.CONSULTING_MD = P.PHYSICIAN_ID( + )
            AND  B.PRK = A.PRK
            AND  B.PRK = L.PRK
        ORDER BY B.ROOM
END_OF_SQL;


NOTES:  This program already works and can produce an HTML report.  There
are four sections to the report, thus, I have to produce four different
pages in the PDF document before I can actually close it.  This was the
first of the pages.  It took me four hours to figure out just what was
going on.  (Commented out each command separately, then in groups, then
started moving the commands around.  Finally got to the point of having all
of the PDF commands together rather than some at the start of the program,
and some in the middle.)

Ideas?

-- 
Edit bug report at http://bugs.php.net/?id=45999&edit=1
-- 
Try a CVS snapshot (PHP 5.2): 
http://bugs.php.net/fix.php?id=45999&r=trysnapshot52
Try a CVS snapshot (PHP 5.3): 
http://bugs.php.net/fix.php?id=45999&r=trysnapshot53
Try a CVS snapshot (PHP 6.0): 
http://bugs.php.net/fix.php?id=45999&r=trysnapshot60
Fixed in CVS:                 http://bugs.php.net/fix.php?id=45999&r=fixedcvs
Fixed in release:             
http://bugs.php.net/fix.php?id=45999&r=alreadyfixed
Need backtrace:               http://bugs.php.net/fix.php?id=45999&r=needtrace
Need Reproduce Script:        http://bugs.php.net/fix.php?id=45999&r=needscript
Try newer version:            http://bugs.php.net/fix.php?id=45999&r=oldversion
Not developer issue:          http://bugs.php.net/fix.php?id=45999&r=support
Expected behavior:            http://bugs.php.net/fix.php?id=45999&r=notwrong
Not enough info:              
http://bugs.php.net/fix.php?id=45999&r=notenoughinfo
Submitted twice:              
http://bugs.php.net/fix.php?id=45999&r=submittedtwice
register_globals:             http://bugs.php.net/fix.php?id=45999&r=globals
PHP 4 support discontinued:   http://bugs.php.net/fix.php?id=45999&r=php4
Daylight Savings:             http://bugs.php.net/fix.php?id=45999&r=dst
IIS Stability:                http://bugs.php.net/fix.php?id=45999&r=isapi
Install GNU Sed:              http://bugs.php.net/fix.php?id=45999&r=gnused
Floating point limitations:   http://bugs.php.net/fix.php?id=45999&r=float
No Zend Extensions:           http://bugs.php.net/fix.php?id=45999&r=nozend
MySQL Configuration Error:    http://bugs.php.net/fix.php?id=45999&r=mysqlcfg

Reply via email to