Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP - Read dynamically generated (and echoed) HTML into a string?

Tags:

php

dompdf

I have a file that pulls some information from the database and creates some relatively simple dynamic HTML.

The file can then be used by DOMPDF to turn it into a PDF document. DOMDPF uses GET variables to achieve the basic implementation.

ob_start();
include_once("report.php?id=1249642977");

require_once("dompdf/dompdf_config.inc.php");

$dompdf = new DOMPDF();
$dompdf->load_html(ob_get_contents());
$dompdf->render();
$dompdf->stream("sample.pdf", array('Attachment'=>'0'));

ob_end_clean();

I thought I might be able to use something ilke that to achieve the aim but unsurprisingly it didn't work.

So how can I read the HTML that gets output to the browser if you were to load the file directly, into a string for use with the DOMPDF class?

like image 831
bcmcfc Avatar asked Dec 05 '22 05:12

bcmcfc


2 Answers

What about using a simple HTTP request to get the HTML file and than loading it in the $dompdf object:

   <?php
    //...
    $dompdf->load_html(file_get_contents("http://yoursite.net/report.php?id=1249642977"));
   //...
   ?>

I don't see why you need output buffering here..

like image 92
Andrea Fiore Avatar answered Dec 08 '22 01:12

Andrea Fiore


Two problems.

First, you can't call a PHP page like that using include_once - the query string will be ignored. You have to give the id to report.php some other way.

Second, you're correctly buffering the output. However, you're passing the current output buffer to DOMPDF, telling it to generate a PDF to the output buffer, and the discarding the output buffer. You probably want something like:

$dompdf = new DOMPDF();
$dompdf->load_html(ob_get_clean());
$dompdf->render();
$dompdf->stream("sample.pdf", array('Attachment'=>'0'));

That'll get the current output buffer, discard it, and disable output buffering. The $dompdf->stream should then work.

like image 28
BlackAura Avatar answered Dec 08 '22 03:12

BlackAura