[PHP] PHP-Datei in PDF konvertieren

Dieses Thema im Forum "Webentwicklung" wurde erstellt von GaYlORd, 1. Juni 2008 .

  1. 1. Juni 2008
    PHP-Datei in PDF konvertieren

    Sers!

    Gibt es eine einfache Variante eine Php-Datei in ein PDF umzuwandeln mittels php?

    Ich hab bissl gegooglet aber, wurde da nicht sonderlich schlau raus.


    Die Datei hat dann nen Bilddrin und ne Taballe... ich dacht eigentlch dass des net so schwer sein kann und eigentlich ähnlich der mailfunktion laufen würde. Aber so tuts des anscheinend nicht!

    Gibts vllt. ne fertige klasse dafür?!

    gruß
    gl
     
  2. 1. Juni 2008
    AW: PHP-Datei in PDF konvertieren

    Sowas meinste doch oder? Is auch bissl schwer des auf den ersten Blick zu erkennen, aber des müsste sowas sein denk ich. Hab den Free Source von folgender site: weberdev.com Ich schätze das hilft dir weiter.

    Spoiler
    Code:
    <?php
     //Please only edit the next 2 variables !
     //Path to Ghostscript Executable
     $gsinst="C:\\ServPDF\\spyce\\gs\\gs8.14\\bin\\gswin32c.exe";
    
     //Postscript Printername (you can download an excellent Postscript Driver Archive from http://www.goermezer.de
     $printername="ServPDF";
    
     //Supported File Formats. There are more formats supported from Office. If you know them,
     //edit the next lines...
     $quality = $_POST['quality'];
     $excelfiles = array ("xls", "XLS", "xlt", "XLT", "csv", "CSV");
     $powerpointfiles = array('ppt', 'PPT', 'pot', 'POT');
     $wordfiles = array("doc", "DOC", 'dot', 'DOT', 'rtf', 'RTF', 'tml', 'TML', 'htm', 'HTM', 'txt', 'TXT');
     $postscriptfiles = array('.ps', '.PS', 'prn', 'PRN', 'eps', 'EPS');
    
     //f you are not familiar with PHP, do nothing else from here !
     error_reporting(E_ALL ^ E_NOTICE);
     $servername = $HTTP_SERVER_VARS['SERVER_NAME'];
     $workdir = getcwd()."\\"; //erzeugt C:\\Apache2\\htdocs\\
     $psfile=$workdir.$_FILES['userfile']['name'].".ps";
     $pdffile=$workdir.$_FILES['userfile']['name'].".pdf";
     $uploaded_doc=$workdir.$_FILES['userfile']['name'];
    ?>
    <html>
    <head>
     <title>PDF Document Converter</title>
    </head>
    <body bgcolor="#FFFFFF" text="#000000" link="#0000FF">
    <table width="100%" border="0">
     <tr>
     <td width="94%"><b>Office2PDF Conversion Service</b></td>
     </tr>
     <tr>
     <td>
     <?php
     echo "Supported File Endings: <br>"
     foreach ($wordfiles as $value) {
     echo "$value, ";
     }
     foreach ($excelfiles as $value) {
     echo "$value, ";
     }
     foreach ($powerpointfiles as $value) {
     echo "$value, ";
     }
     foreach ($postscriptfiles as $value) {
     echo "$value, ";
     }
     ?>
     </td>
     </tr>
    </table>
    <form enctype="multipart/form-data" action="<?=$PHP_SELF ?>" method="post">
    <table width="100%" border="0" bgcolor="#CCCCCC">
     <tr>
     <td width="17%">Office File: </td>
     <td width="83%"><input name="userfile" type="file"></td>
     </tr>
     <tr>
     <td>Quality: </td>
     <td><table width="800">
     <tr>
     <td><label>
     <input type="radio" checked name="quality" value="-dPDFSETTINGS=/default">
     Default: Standard setting, middle sized PDFs, Acrobat 4 compatible</label>
     </td>
     </tr>
     <tr>
     <td><label>
     <input type="radio" name="quality" value="-dPDFSETTINGS=/screen">
     Screen: small PDFs, especially for Internet, Acrobat 3 compatible</label>
     </td>
     </tr>
     <tr>
     <td><label>
     <input type="radio" name="quality" value="-dPDFSETTINGS=/ebook">
     EBook: PDFs especially for e-Books (= middle Quality), Acrobat 4 compatible</label>
     </td>
     </tr>
     <tr>
     <td><label>
     <input type="radio" name="quality" value="-dPDFSETTINGS=/printer">
     Printer: PDFs especially for Printing Documents (= good Quality), Acrobat 4 compatible</label>
     </td>
     </tr>
     <tr>
     <td><label>
     <input type="radio" name="quality" value="-dPDFSETTINGS=/prepress">
     Prepress: PDFs especially for die Printing (= best Quality). Acrobat 4 compatible</label>
     </td>
     </tr>
     </table>
     </td>
     </tr>
     <tr>
     <td>Start conversion</td>
     <td><input type="submit" name="send" value="send file">
     </td>
     </tr>
    </table>
    </form>
    <?php
    //If Document has Password, you can use this variable (works not with Powerpoint
    if ($_POST['password']){
     $password=$_POST['password'];
    }else {
     $password="False";
    }
    
    list ($name, $suffix) = split ('[.]', $_FILES['userfile']['name']);
    
    function excel($document, $ps_file, $pdf_file, $gs_inst, $printer_name, $out_quality){
     $excel = new COM("excel.application") or die("Unable to instantiate Excel");
     $excel->AskToUpdateLinks = 0;
     $excel->Workbooks->Open($document) or die("Unable to open document");
     $excel->Workbooks[1]->Saved=1;
     $excel->Workbooks[1]->PrintOut(1, 5000, 1, False, $printer_name, True, False, $ps_file);
     $excel->Workbooks[1]->Close(false);
     $excel->Quit();
     $excel = null;
     unset($excel);
     while (exec("$gs_inst -sDEVICE=pdfwrite -r300 $out_quality -dNOPAUSE -dBATCH -dSAFER -sPAPERSIZE=a4 -sOutputFile=\"".$pdf_file."\" \"".$ps_file."\"") > 0){
     sleep(1);
     }
    }
    
    function powerpoint($document, $ps_file, $pdf_file, $gs_inst, $printer_name, $out_quality){
     $powerpoint = new COM("powerpoint.application") or die("Unable to instantiate Powerpoint");
     $powerpoint->Visible = 1;
     $powerpoint->Presentations->Open($document, False, False, False) or die("Unable to open document");
     $powerpoint->Presentations[1]->Saved=1;
     //$powerpoint->ActivePrinter = $printer_name;
     $powerpoint->Presentations[1]->PrintOut(1, 5000, $ps_file, 0, False);
     $powerpoint->Presentations[1]->Close();
     $powerpoint->Quit();
     $powerpoint = null;
     //unset($powerpoint);
     while (exec("$gs_inst -sDEVICE=pdfwrite -r300 ".$out_quality." -dNOPAUSE -dBATCH -dSAFER -sPAPERSIZE=a4 -sOutputFile=\"".$pdf_file."\" \"".$ps_file."\"") > 0) {
     sleep(1);
     }
     }
    
    function word($document, $ps_file, $pdf_file, $passwd, $gs_inst, $printer_name, $out_quality){
     $word = new COM("word.application") or die("Unable to instantiate Word");
     //$word->Visible = 0;
     $word->Documents->Open($document, False, True, False, $passwd) or die("Unable to open document");
     //$word->Documents[1]->Saved = 1;
     //$word->ActivePrinter = $printer_name;
     $word->Documents[1]->PrintOut(True, False, 0, $ps_file);
     while($word->BackgroundPrintingStatus > 0){
     sleep(1);
     }
     $word->Documents[1]->Close(false);
     $word->Quit();
     $word = null;
     unset($word);
     while (exec("$gs_inst -sDEVICE=pdfwrite -r300 $out_quality -dNOPAUSE -dBATCH -dSAFER -sPAPERSIZE=a4 -sOutputFile=\"".$pdf_file."\" \"".$ps_file."\"") > 0){
     sleep(1);
     }
    }
    
    if ($_POST['send']){
     print "<pre>";
     if (move_uploaded_file($_FILES['userfile']['tmp_name'], $workdir.$_FILES['userfile']['name'])) {
     if (in_array($suffix, $wordfiles)){
     word($uploaded_doc, $psfile, $pdffile, $password, $gsinst, $printername, $quality);
     }
     elseif (in_array($suffix, $excelfiles)){
     excel($uploaded_doc, $psfile, $pdffile, $gsinst, $printername, $quality);
     }
     elseif (in_array($suffix, $postscriptfiles)){
     while (exec("$gsinst -dBATCH -sDEVICE=pdfwrite -r300 $quality -dNOPAUSE -dBATCH -dSAFER -sPAPERSIZE=a4 -sOutputFile=\"".$pdffile."\" -dNOPAUSE \"$uploaded_doc\"") > 0){
     sleep(1);
     }
     }
     elseif (in_array($suffix, $powerpointfiles)){
     powerpoint($uploaded_doc, $psfile, $pdffile, $gsinst, $printername, $quality);
     } else {
     echo'<strong><font color="#FF0000">Dateiformat wird nicht unterstützt !!!</strong></font><br>';
     unlink($uploaded_doc);//Hochgeladene Datei löschen
     echo'<strong><font color="#FF0000">Hochgeladene Datei wieder gelöscht.</strong></font>';
     exit();
     }
     } else {
     echo '<strong><font color="#FF0000">Datei konnte nicht hochgeladen werden !</strong></font>';
     exit();
     }
     while (!(is_writable($pdffile))){ //abfrage ob Datei verfügbar ?!
     sleep(1);
     }
     if (!headers_sent()) {
     $header="http://$servername/".$_FILES['userfile']['name'].".pdf";
     header ("Location: $header");
     unlink($psfile);
     unlink($uploaded_doc);
     exit();
     } else { echo 'Das Resultat befindet sich für 24 Stunden unter: <a href="http://'.$servername.'/'.$_FILES['userfile']['name'].'.pdf">'.$_FILES['userfile']['name'].'.pdf</a>'; }
     unlink($psfile);//Hochgeladene Datei löschen
     unlink($uploaded_doc);//Hochgeladene Datei löschen
     exit();
    }
    ?>
    </BODY>
    </HTML>
     
  3. 2. Juni 2008
    AW: PHP-Datei in PDF konvertieren

    jaaa, genau das ist sowas, was ich gesucht habe!!!

    Muss nur noch mein Hoster anhaun wegen Ghostscript und Postscript Printer

    Ich lass solang noch offen, bis ich weiß obs klappt oder nicht.

    Dank schonmal und bw is raus!


    gruß
    gl
     
  4. 2. Juni 2008
    AW: PHP-Datei in PDF konvertieren

    ansonsten versuch es mal mit fdpf:
    fpdf.de - Herzlich willkommen

    nutze ich privat und beruflich. ist "simpel" dank doku und es lässt sich sehr schön erweitern
    brauchst auch auf deinem webserver nix installieren lassen.
    ist allerdings nicht so schön, dass man dadurch dateien "konvertieren" lassen kann ohne weitere kenntnisse
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.