ID: 45999 Updated by: [EMAIL PROTECTED] Reported By: markem at airmail dot net -Status: Open +Status: Feedback Bug Type: PDF related Operating System: Windows XP PHP Version: 5.2.6 New Comment:
Please provide the shortest possible self-contained and complete (!) reproducing script (max 20 lines!). And one that can be run with CLI. Previous Comments: ------------------------------------------------------------------------ [2008-09-05 00:00:52] markem at airmail dot net 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 this bug report at http://bugs.php.net/?id=45999&edit=1