Creare document PDF cu DomPDF

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
andras
Mesaje:430

Creare document PDF cu DomPDF

Salut,
Am facut un document pdf c\u Dompdf (fisierul "pdflist0.php"). Problem: merge perfect pe local dar nu merge pe server. Nu da nici un fel de eroare dar ramine in fisierul pdflist0.php (apare in Opera si Chrome o pagina alba). Nu salveaza pe server nici nu trimite la client. Nu afiseaza nici un fel de mesaj. La echo apare corect $html.
In cod am pus: (la final):

Cod: Selectaţi tot

<?php
$html .='</body></html>';   // ultima instructiune care inchide $html

//echo $html;
 $filename = "list0_" . date('Ymd') . ".pdf";
// foloseste clasa dompdf ca sa creeze fisierul PDF, il salveaza, apoi il returneaza la browser
$dompdf = new DOMPDF();
$dompdf->load_html($html);            // incarca sirul HTML
$dompdf->render();                    // transforma HTML in PDF
$pdf = $dompdf->output();             // preia PDF ca sir
//file_put_contents(($savein.$filename), $pdf);           // salveaza fisierul pdf pe server
$dompdf->stream($filename);      // Trimite documentul PDF la client
exit();
?>
Care sa fie cauza? Am folosit Dompdf ultima varianta (2014).
Multumesc.

MarPlo Mesaje:4343
Salut
Am testat acest cod si functioneaza:

Cod: Selectaţi tot

<?php 
include 'dompdf_config.inc.php';
$html ='<html><head><title>Test DomPdf 2014</title></head><body><h1>Test DomPdf 2014</h1></body></html>';

//echo $html;
$savein = '';    // director pt salvat fisier
$filepdf = 'list0_'. date('Ymd') .'.pdf';

// foloseste clasa dompdf ca sa creeze fisierul PDF, il salveaza, apoi il returneaza la browser
$dompdf = new DOMPDF();
$dompdf->load_html($html);            // incarca sirul HTML
$dompdf->render();                    // transforma HTML in PDF
$pdf = $dompdf->output();             // preia PDF ca sir

file_put_contents($savein . $filepdf, $pdf);  // salveaza fisierul pdf

$dompdf->stream($filepdf);             // trimite documentul PDF la client

// Alternativ, redirect la fisierul pdf salvat pe server
// header('Location: '. $savein . $filepdf);
?>
- La adresa asta e documehtatia de utilizare:
digitaljunkies.ca/dompdf/usage.php

- In fisierul "dompdf_config.inc.php" am pus comment la linia de cod 332 deoarece acceseaza un fisier php pentru alte fonturi, dar care nu exista si returna eroare.

Cod: Selectaţi tot

require_once(DOMPDF_LIB_DIR . "/php-font-lib/classes/Font.php");

andras Mesaje:430
Din pacate la mine nu merge pe server, doar pe local. Nu salveaza nici pe server desi am indicat un folder cu drepturi 0777. Codul intreg (fisierul pdflist0proba.php):

Cod: Selectaţi tot

<?php 
include('dompdf/dompdf_config.inc.php');
$html ='<html><head><title>Test DomPdf 2014</title></head><body><h1>Test DomPdf 2014</h1></body></html>';
$savein = 'poze/';    // director pt salvat fisier
$filepdf = 'list0_'. date('Ymd') .'.pdf';
$dompdf = new DOMPDF();
$dompdf->load_html($html);            // incarca sirul HTML
$dompdf->render();                    // transforma HTML in PDF
$pdf = $dompdf->output();             // preia PDF ca sir
file_put_contents($savein . $filepdf, $pdf);  // salveaza fisierul pdf
$dompdf->stream($filepdf);             // trimite documentul PDF la client
?>
Eroarea de la linia 332 am observat-o, eu puneam un fisier Font.php acolo unde l-a cautat. Acum am comentat linia. Nu stiu de de nu merge, vad ca nu foloseste headere.
E posibil sa fie ceva din php.ini de pe server?

Sa incerc mPdf? Si PHPExcel poate genera fisiere pdf da am vrut cu dompdf.

MarPlo Mesaje:4343
Incearca fara file_put_contents(), doar cu stream() pt. a trimite direct documentul pdf la browser.
Daca nu functioneaza, presupun ca oproblema e ceva de la configurarile serverului, dar nu ma pricep.
Poate te pot lamuri cei de la hosting.
Pe serverul unde e acest site functioneaza.

Eventual poti incerca si cu alta clasa php, nu conteaza, doar sa-ti functioneze.
- Personal nu stiu cum e cu mPdf.

andras Mesaje:430
Pana la urma cauza s-a dovedit a fi banala: in PHP era nevoie extensia php-mbstring, care este default pe local in Windows (php_mbstring.dll) dar nu este default pe server in Linux. Se instaleaza php-mbstring pe linux si merge.

Subiecte similare