Ich brauche Hilfe bei der Konvertierung von HTML - PDF

  • Guten Abend, alle


    Seit einigen Tagen versuche ich eine PHP-Datei zu schreiben, die die persönliche Daten aus DB sammelt und schließlich als PDF exportiert... Mein Ziel ist ein einfacher Lebenslauf einer Person in PDF zu erstellen. Das Bild der Person sollte in PDF links oben stehen und der Lebenlauf sollte rechts um das Bild sein.


    Ein Link zu meinem Ziel: http://www11.pic-upload.de/14.06.14/8kpp35r7aj4.jpg


    Ich weiß gerade nicht wie ich den Text im Code positionieren müsste sowie es im Bild ?


    Bisherige Versuche:
    1. Mit ->Cell Funktion von FPDF hat es nicht geklappt, und zeitaufwendig...


    2. mit PHPWord-master wollte ich erstmal eine Word-Datei erzeugen. Ich habe zuerst die dynamische PHP in statische HTML umgewandelt, es hat gut funktioniert und dann mit Hilfe von Open Source "htmltodocx_0_6_5_alpha" die HTML in Word konvertiert, aber das Bild erscheint nicht...und das CSS-Style hat auch keine Wirkung mehr...


    Ich hoffe dass mir jemand seine Vorschläge geben könnte.


    Vielen Dank im Voraus!



    Beste Grüße, Carvin

  • Danke für deine Antwort, Wolf


    Dompdf habe ich schon seit ein paar Stunden probiert, auch wurde das Bild nicht angezeigt und stattdessen an der Stelle wo das Bild erscheinen sollte stand eine Fehlermeldung "Image not found
    URL_BASEhttp://www.kunstgriff-agentur.de/kuenstler/Solo-Instrumentalisten/Blau und Rot,ObiWan One/kent.jpg", also es sieht so aus _>: http://www11.pic-upload.de/14.06.14/gv8gd7rlle56.jpg


    pdfcrowd würde ich nachher probieren. ;)


    LG, Carvin

  • Ja, weil ich das Bild durch anderes ersetzt habe, aber es war das richtige Pfad bevor ich was änderte


    Danke für deinen Hinweis, ich würde später meinen Code hier posten.


    Schönen Abend.

  • Mein Ansatz zu deinem Problem... statisches Html mit php generieren und dann nurnoch pdf'n lassen:
    http://www.sitepoint.com/conve…ompdf/#highlighter_864857
    dein php:

    PHP
    <?php
    $dompdf = new DOMPDF();
    $dompdf->load_html(file_get_contents('html_generator.php'));
    $dompdf->render();
     
    $output = $dompdf->output();
    file_put_contents("/path/to/file.pdf", $output);
    ?>


    html_generator.php

    HTML
    <html>
     <body>
        <h1>Hello Dompdf</h1>
          <script type="text/php">
              $bild_pfad = Datenbank bla bla gib mir den pfad zum aktuellen bild
              echo "<img src='$bild_pfad'>";
          </script>
     </body>
    </html>


    Du hast also in der html_generator.php den code der aus der DB die Daten holt und dann an dieser Stelle ausgibt und das ganze wird dann zu nem pdf gemacht :)

  • Guten Morgen, Wolf


    Danke für dein Beispiel. Hast du deinen Code selbst schon auf einem Server ausgeführt? Hat es funktioniert?


    Zu meinem Code: Die Informationen von einer Person die ich aus DB geholt habe werden auf eine Info-Seite angezeigt, auf welcher auch mehrere Buttons mit unterschiedlichen Funktionen (z.b.: bearbeiten, PDF, Vertrag(in Word), ... ) sind. Wenn ich auf PDF klicke, wird eine weitere Seite gleich aufgemacht, um die Informationen weiter zu bearbeiten, dann wird als HTML/PDF exportiert.


    Warum ich zuerst die PHP in HTML(statisch) umwandle, weil die Daten zur Bearbeitung per SESSION übergeben wurden, und wenn die Seite nochmal per

    Code
    file_get_contents('html_generator.php')

    aufgerufen wird, wird nix angezeigt, weil die Session nicht mehr da sind ==> deswegen HTML


    Schönen sonnigen Tag.


    LG aus Hannover

  • Doch das $_SESSION Array müsste verfügbar sein und nein ich habe es nich nicht ausprobiert aber werde das jetzt gleich tun..


    Hast du das gemacht..?!

    Zitat von http://www.sitepoint.com/convert-html-to-pdf-with-dompdf/#highlighter_864857

    Dompdf also allows us to add a header or footer to the generated PDF by embedding a PHP script in the HTML that it renders. But because processing arbitrary code can pose a security risk if you’re not careful, the configuration value that controls this functionality is off by default. We need to first set the DOMPDF_ENABLE_PHP option true.

  • Mit folgendem Code für Konvertierung habe ich es nochmal ausgeführt...keine positive Wirkung ..../


    ?(

  • Ich verstehe noch nicht ganz, warum keine PDF erstellt werden könnte, wenn ich im Code den Quelltext aus anderer HTML auslese


    mit


    PHP
    $content = file_get_contents("kg_kstl_info_html.html");

    ??? 8|


    Aber es geht nur, wenn ich im Code einen Quelltext selbst schreibe....komisch oder?


    LG

  • Try...


    pdfer.php

    PHP
    <html>
     <body>
        <h1>Hello World</h1>
     </body>
    </html>


    Bei mir gehts :) (nur nochnetr mit php x.x)


    Lösung - hier noch mit dem Bilder Bugfix


    dein PHP


    Und hier noch die pdfer.php (könnte genausogut im eigentl. php stehen


    Die Ausgabe:


    Und hier das Ergebnis ... (y)

  • Hi, Wolf


    Danke für deine Antwort und hast du mit dem folgenden Code probiert? Der Code entspricht deinem pdfer.php... Und wie sieht die PDF bei dir aus? :rolleyes:


    PHP
    <html> <body>    <h1>Hello TEST</h1>    <?php 		echo "<div style='margin:auto; width :500px; height:500px;'><img style='float:left;' src = '../images/kglogo.jpg' /><br />";		echo "<div style='margin-top:10px; float:left; width :200px; height:50px;' >ABC</div><div style='margin-top:10px; float:left; width :200px; height:50px;'>DEF</div></div>";		 ?> </body></html>

    8)

  • Wenn du deinen Code nichzt in eine Zeile quetschen würdest und so weiter... dann würde ich ihn mir auch anschauen, aber so nicht.


    hier einmal korrekt und solange du nichts dynamisch ausgibst könntest du auch einfach das 2. verwenden ;)


    funktionieren würde es dann trotzdem nicht... weil es müsste ja als variable verfügbar sein

  • Nachdenken und schauen was ich geschrieben habe. oder einfach meine Lösung verwenden, haha.
    Und mit meinem Lösungsbeispiel bisschen rumspielen.. dann kommst du zum Ziel, das ist schon mehr als nötig...

  • Hi, Wolf


    Sorry, ich habe deine vorletzte Nachricht mit dem kompletten Beispiel nicht gelesen....


    Meine Probe hat leider nicht geklappt, obwohl ich deinen Code identisch zu meinem verwendet habe...bin gerade ratlos...(


    convert_html2pdf_go.php



    PHP
    <?php// Für den Test$_SESSION['user']['name'] = 'Carvin ';$_SESSION['user']['img'] = 'people_face.jpg';
    //Pfad zum sichern (beim Download wird nur der dateiname beachtet! [Pfadangaben werden ignoriert])$PDF['save_path'] = "pdf_test/kg_as_pdf.php";//Wenn externe Datei...include 'html_php_code.php';
    //Ansonnsten#$PDF['html'] = "[...]";
    /* ########       ######################################################################################## * ########  PDF  ######################################################################################## * ########       ######################################################################################*/
    //Das hier leer lassendefine("URL_BASE", '');//hier statt localhost deine Domain eintragen (auf den / am ende achten!!!! )define('HOSTNAME', 'http://www.kunstgriff-agentur.de/');//Pfad zur config Dateirequire_once "dompdf-0.6.1/dompdf_config.inc.php";$dompdf = new DOMPDF();$dompdf->load_html($PDF['html']);$dompdf->render();
    // SICHERN    $output = $dompdf->output();    // Wenn Datei gesichert    if(file_put_contents($PDF['save_path'], $output)){        //Meldung ausgeben        echo "PDF is saved in '".$PDF['save_path']."'.";    }
    //oder AUSGEBEN/*    if ($dompdf->stream($PDF['save_path'])) {        //Meldung ausgeben (wird ignoriert)        echo "PDF download: '".basename($PDF['save_path'])."'.";    }*//* ########         ###################################################################################### * ########  DEBUG  ###################################################################################### * ########         ####################################################################################*/
    echo "<br>------------------------</br>";echo "<b>PFD Debug</b><pre>";//Das Array mit alles dompdf Fehlermeldungenprint_r($_dompdf_warnings);//html soll nicht dargestellt werden sondern der Code gezeigt$PDF['html'] = htmlspecialchars($PDF['html']);//evtl auskommentierenprint_r($PDF);echo "</pre>";echo "<b>User Debug</b><pre>";print_r($_SESSION['user']);echo "</pre>";?>



    html_php_code.php



    PHP
    <?php$PDF['html']  = '<html><head>    <style>        header{            display: block;        }        header>h1{            display: inline-block;        }        header>img{            max-width: 200px;            display: inline-block;        }        table img{            max-width: 100px;        }        table td{            padding: 10px;        }    </style></head><body>    <header>        <img src="'.$_SESSION['user']['img'].'">        <h1>'.$_SESSION['user']['name'].'</h1>    </header>    <section>        <h2>User Daten</h2>        <table>            <tr>                <td>Name</td>                <td>'.$_SESSION['user']['name'].'</td>            </tr>            <tr>                <td>Bild Pfad</td>                <td>'.$_SESSION['user']['img'].'</td>            </tr>            <tr>                <td>Bild</td>                <td><img src="'.$_SESSION['user']['img'].'"></td>            </tr>        </table>    </section> </body></html>';?>




    Weißt du warum??? :huh:


    PS: Welche Version von dompdf hast du denn?

    LG

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!