PHP – Leia HTML gerado dinamicamente (e ecoado) em uma string?

Eu tenho um arquivo que extrai algumas informações do database e cria algum HTML dynamic relativamente simples.

O arquivo pode então ser usado pelo DOMPDF para transformá-lo em um documento PDF. DOMDPF usa variables ​​GET para alcançar a implementação básica.

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(); 

Eu pensei que eu poderia usar algo que para alcançar o objective, mas, sem surpresa, não funcionou.

Então, como posso ler o HTML que obtém saída para o navegador se você fosse carregar o arquivo diretamente, em uma seqüência de caracteres para usar com a class DOMPDF?

Dois problemas.

Primeiro, você não pode chamar uma página PHP como essa usando include_once – a seqüência de consulta será ignorada. Você deve dar o id para reportar.php de outra maneira.

Em segundo lugar, você está armazenando corretamente a saída. No entanto, você está passando o buffer de saída atual para DOMPDF, dizendo para gerar um PDF para o buffer de saída e descartar o buffer de saída. Você provavelmente quer algo como:

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

Isso obterá o buffer de saída atual, descartá-lo e desabilitar o buffer de saída. O stream $ dompdf-> então deve funcionar.

E quanto ao uso de uma simples solicitação HTTP para obter o arquivo HTML e de carregá-lo no object $ dompdf:

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

Não vejo por que você precisa de buffer de saída aqui.

BlackAura está no caminho certo. File_get_contents, como outros sugeriram, não passarão pelo GET vars (ou POST). Mas você pode usar o CURL para fazer isso. O código abaixo deve funcionar:

 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://YOURFULLURL.COM/report.php?id=1249642977'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $my_html = curl_exec($ch); curl_close($ch); $dompdf = new DOMPDF(); $dompdf->load_html($my_html); $dompdf->render(); $dompdf->stream("sample.pdf", array('Attachment'=>'0')); 

Espero que ajude.

-Kevin

Basta usar o file_get_contents do PHP como tal:

 $page_html = file_get_contents("page.php?id=number"); 

então passe $ page_html para dompdf.

Espero que isto ajude 🙂

Eventualmente, decidi alterar a página php que produz o HTML para que ele se torne uma function retornando uma string HTML. Isso é mais uma solução alternativa do que uma solução.

Future Googlers para esta página deve estar ciente de que DOMPDF permite que você execute o PHP em linha em uma página usando:

  

BlackAura tem a ideia certa. Você adiciona o PDF gerado ao buffer de saída e depois descarta tudo.