1

Bonjour à tous.

Tout d'abord merci pour ce script vraiment très sympathique !
A l'heure actuelle tout fonctionne correctement de mon côté, sauf la sauvegarde sur le serveur malheureusement.

Voici la ligne que je modifie :
$html2pdf->Output('test-devis.pdf');
Par :
$html2pdf->Output('/test-devis/test-devis2.pdf', 'F');

Résultat ça m'affiche une page blanche, et aucun fichier enregistré côté serveur.
J'ai lu que ça pouvait être les chmod, donc j'ai mis 777 et pareil.
J'ai recherché un peu partout sur internet sans solution, pourtant ça ne semble pas compliqué lol.
Je suis chez OVH, est-ce que ça peut venir de là ? Sinon que dois-je faire ?

Merci d'avance pour votre aide !

Link`

Edit : J'utilise la version 4.5.0 de HTML2PDF

2

En complément voici le message d'erreur lorsque j'active le mode debug :
Fatal error: Uncaught exception 'Exception' with message 'TCPDF ERROR: Unable to create output file://edit-pdf/test/test-devis/test-devis2.pdf' in webroot/edit-pdf/vendor/tecnickcom/tcpdf/tcpdf.php:2927 Stack trace: #0 /webroot/edit-pdf/vendor/tecnickcom/tcpdf/tcpdf.php(7675): TCPDF->Error('Unable to creat...') #1webroot/edit-pdf/html2pdf.class.php(390): TCPDF->Output('http://www.spor...', 'F') #2 /webroot/edit-pdf/test/test.php(44): HTML2PDF->Output('http://www.spor...', 'F') #3 {main} thrown in /webroot/edit-pdf/vendor/tecnickcom/tcpdf/tcpdf.php on line 2927

Merci encore smile.

3

Petit up !

4

ton chemin est visiblement absolu et non relatif au dossier du script >>> file://edit-pdf/test/test-devis/test-devis2.pdf'

peut être remplacer $html2pdf->Output('/test-devis/test-devis2.pdf', 'F');
par $html2pdf->Output('./test-devis/test-devis2.pdf', 'F');
ou $html2pdf->Output('test-devis/test-devis2.pdf', 'F');
ou $html2pdf->Output('/var/www/test-devis/test-devis2.pdf', 'F');
?
et la le mec il le pécho par le bras et il lui dit '

5

Merci pour ta réponse, malheureusement ça ne fonctionne pas non plus. Voici le code complet :

    // get the HTML
    ob_start();
    include(dirname(__FILE__).'/res/test.php');
    $content = ob_get_clean();

    // convert in PDF
    require_once(dirname(__FILE__).'/../vendor/autoload.php');
    try
    {
    	if(preg_match('/Safari/i',$_SERVER['HTTP_USER_AGENT']) && !preg_match('/Chrome/i',$_SERVER['HTTP_USER_AGENT'])) {
   			$html2pdf = new HTML2PDF('P', 'A4', 'fr', true, 'ISO-8859-15', array(8, 8, 8, 12));
		} else {
        	$html2pdf = new HTML2PDF('P', 'A4', 'fr', true, 'ISO-8859-15', array(6, 6, 6, 4));
		}
        // $html2pdf->setModeDebug();
		$html2pdf->addFont('anc', '', './edit-pdf/vendor/tecnickcom/tcpdf/fonts/anc.php');
        $html2pdf->setDefaultFont('anc');
        $html2pdf->writeHTML($content, isset($_GET['vuehtml']));
        $html2pdf->Output('test-devis.pdf');
        
    }
    catch(HTML2PDF_exception $e) {
        echo $e;
        exit;
    }

De cette façon il fonctionne, mais si je remplace la ligne output par
$html2pdf->Output('./test-devis/test-devis2.pdf', 'F');Plus rien ne fonctionne.

Avez vous une autre idée ?

Merci bien.

6

je pense que le répertoire ou à lieu la sauvegarde n'est pas celui auquel tu pense, il ne doit donc pas trouver ton sous répertoire et sort l’erreur
peut être juste tester sans spécifier de sous répertoire et regarder ou la save s'effectue ? $html2pdf->Output('hello.pdf', 'F');

au pire, spécifier un chemin absolue depuis / du serveur, ou utiliser $html2pdf->Output('', true); pour récupérer le contenu et faire ta propre save "à la main" ^^
et la le mec il le pécho par le bras et il lui dit '

7

Merci pour ta réponse.
J'ai déjà essayé de pleins de manières différentes, plusieurs chemins, relatifs, chemins absolu, mais rien ne fonctionne, voici l'erreur lorsque je mets $html2pdf->Output('hello.pdf', 'F'); :
Warning: fopen(): remote host file access not supported, file://hello.pdf in /home/.../www/www....com/webroot/edit-pdf/vendor/tecnickcom/tcpdf/include/tcpdf_static.php on line 1854 Warning: fopen(file://hello.pdf): failed to open stream: no suitable wrapper could be found in /home/.../www/www....com/webroot/edit-pdf/vendor/tecnickcom/tcpdf/include/tcpdf_static.php on line 1854 Fatal error: Uncaught exception 'Exception' with message 'TCPDF ERROR: Unable to create output file: hello.pdf' in /home/.../www/www...com/webroot/edit-pdf/vendor/tecnickcom/tcpdf/tcpdf.php:2927 Stack trace: #0 /home/.../www/www....com/webroot/edit-pdf/vendor/tecnickcom/tcpdf/tcpdf.php(7675): TCPDF->Error('Unable to creat...') #1 /home/.../www/www....com/webroot/edit-pdf/html2pdf.class.php(390): TCPDF->Output('hello.pdf', 'F') #2 /home/.../www/www....com/webroot/edit-pdf/test/test.php(40): HTML2PDF->Output('hello.pdf', 'F') #3 {main} thrown in /home/../www/www....com/webroot/edit-pdf/vendor/tecnickcom/tcpdf/tcpdf.php on line 2927
Et aucune sauvegarde n'est faîte.

Merci encore,

Link`

8

visiblement tcpdf concatène le path avec file:// si il ne trouve :// dans le path spécifié
php quant à lui ne peut visiblement pas travailler avec des path relatif si file:// est spécifié https://bugs.php.net/bug.php?id=28820

>>> http://stackoverflow.com/questions/28853871/fopen-remote-host-file-access-not-accepted-on-a-local-file

avant d'aller commenter la ligne qui rajoute file:// dans tcpdf, teste la réponse de gerd & mattferderer => $html2pdf->Output(__DIR__ . '/hello.pdf', 'F');
et la le mec il le pécho par le bras et il lui dit '

9

Merci pour ton aide !
J'ai enfin réussi. Effectivement il faut différencier le chemin d'un fichier et une adresse URL.
Voici mon code de sortie final fonctionnel (sauvegarde + affichage) :

$html2pdf->Output('test-devisX.pdf');
$html2pdf->Output('/home/test/www/com/webroot/edit-pdf/test/test-devis/test-devisX.pdf', 'F');

Merci encore !