PHPBuilder - webbased Office to PDF Converter



RSS Twitter
Snippets Other

webbased Office to PDF Converter

by: Mustafa Gzer
|
March 31, 2004

Version: 1.0

Type: Full Script

Category: Other

License: GNU General Public License

Description: A webbased Microsoft Office to PDF converter developed in PHP and based on Ghostscript with Postscript Printer.



<?
  //For more Information or a PYthon Server Pages based application see http://www.goermezer.de
  //Developed by Mustafa Grmezer
  //Please leave the above 3  comments in this script !
  $printername="PDF-Datei mit erweiterten Einstellungen"
  $psfile="C:\\temp\\".$_FILES['userfile']['name'].".ps";
  $pdffile="c:\\Apache2\\htdocs\\uploads\\".$_FILES['userfile']['name'].".pdf";
  $result_link="<b>Result: <a href='http://lap-ibm-331/downloads/".$_FILES['userfile']['name'].".pdf'>Open PDF Result</a>\n";
  $uploaddir = 'c:\\Apache2\\htdocs\\uploads\\';
  $uploaded_doc=$uploaddir.$_FILES['userfile']['name'];
  $gsinst="c:\\gs\\gs8.13\\bin\\gswin32c.exe"
?>
<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>Supported Formats: doc, rtf, xls, ppt, txt, html, ps, eps</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 width="17%">Document-Password (if given): </td>
    <td width="83%"><input name="password" type="password"></td>
  </tr>
  <tr>
    <td>Quality: </td>
    <td><table width="200">
      <tr>
        <td><label>
          <input type="radio" name="quality" value="300dpi">
          300 DPI</label>
        </td>
      </tr>
      <tr>
        <td><label>
          <input type="radio" name="quality" value="600dpi">
          600 DPI</label>
        </td>
      </tr>
      <tr>
        <td><label>
          <input type="radio" name="quality" value="1200dpi">
          1200 DPI</label>
        </td>
      </tr>
    </table>
    </td>
    </tr>
  <tr>
    <td>Start conversion</td>
    <td><input type="submit" name="send" value="send file">
    </td>
  </tr>
</table>
</form>
<?
if ($_POST['password']){
  $password=$_POST['password'];
  }
  else { $password="False"; }
list ($name, $suffix) = split ('[.]', $_FILES['userfile']['name']);
function excel($document, $ps_file, $pdf_file){
  $excel = new COM("excel.application") or die("Unable to instantiate Excel");
  $excel->AskToUpdateLinks = 0;
  $excel->Workbooks->Open($document);
  $excel->Workbooks[1]->Saved=1;
  $excel->Workbooks[1]->PrintOut(1, 5000, 1, False, $printername, True, False, $ps_file);
  $excel->Workbooks[1]->Close(false);
  $excel->Quit();
  $excel->Release();
  $excel = null;
  unset($excel);
  while (exec("$gsinst -sDEVICE=pdfwrite -r300 -dNOPAUSE -dBATCH -dSAFER -sPAPERSIZE=a4 -sOutputFile=\"".escapeshellcmd($pdf_file)."\" \"".escapeshellcmd($ps_file)."\"") > 0){
    sleep(1);
    }
  }
function powerpoint($document, $ps_file, $pdf_file){
  $powerpoint = new COM("powerpoint.application") or die("Unable to instantiate Powerpoint");
  $powerpoint->Visible = 1;
  $powerpoint->Presentations->Open($document, False, False, False, False);
  $powerpoint->Presentations[1]->Saved=1;
  $powerpoint->ActivePrinter = $printername;
  $powerpoint->Presentations[1]->PrintOut(1, 5000, $ps_file, 0, False);
  $powerpoint->Presentations[1]->Close();
  $powerpoint->Quit();
  $powerpoint->Release();
  $powerpoint = null;
  unset($powerpoint);
  while (exec("$gsinst -sDEVICE=pdfwrite -r300 -dNOPAUSE -dBATCH -dSAFER -sPAPERSIZE=a4 -sOutputFile=\"".escapeshellcmd($pdf_file)."\" \"".escapeshellcmd($ps_file)."\"") > 0) {
    sleep(1);
    }
  }
function word($document, $ps_file, $pdf_file, $passwd){
  $word = new COM("word.application") or die("Unable to instantiate Word");
  //$word->Visible = 0;
  $word->Documents->Open($document, False, True, False, $passwd);
  $word->Documents[1]->Saved = 1;
  $word->ActivePrinter = "PDF-Datei mit erweiterten Einstellungen";
  $word->Documents[1]->PrintOut(True, False, 0, $ps_file);
  while($word->BackgroundPrintingStatus > 0){
    sleep(1);
    }
  $word->Documents[1]->Close(false);
  $word->Quit();
  $word->Release();
  $word = null;
  unset($word);
  while (exec("$gsinst -sDEVICE=pdfwrite -r300 -dNOPAUSE -dBATCH -dSAFER -sPAPERSIZE=a4 -sOutputFile=\"".escapeshellcmd($pdf_file)."\" \"".escapeshellcmd($ps_file)."\"") > 0){
    sleep(1);
    }
  }
if ($_POST['send']){
    print "<pre>";
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$_FILES['userfile']['name'])) {
        if ($suffix=="doc" || $suffix=="dot" || $suffix=="htm" || $suffix=="html" || $suffix=="txt" || $suffix=="rtf"){
          word($uploaded_doc, $psfile, $pdffile, $password);
        }
        elseif ($suffix=="xls" || $suffix=="xlt" || $suffix=="csv"){
          excel($uploaded_doc, $psfile, $pdffile);
        }
        elseif ($suffix=="ps" || $suffix=="prn" || $suffix=="eps"){
          while (exec("$gsinst -dBATCH -sDEVICE=pdfwrite -sOutputFile=\"c:\\apache2\\htdocs\\uploads\\".escapeshellcmd($pdffile)."\" -dNOPAUSE \"$uploaded_doc\"") > 0){
            sleep(1);
            }
        }
        elseif ($suffix=="ppt" || $suffix=="pps" || $suffix=="pot" || $suffix=="PPT"){
          powerpoint($uploaded_doc, $psfile, $pdffile);
        } else {
            echo'<strong><font color="#FF0000">Dateiformat wird nicht untersttzt !!!</strong></font><br>';
            //exec("del \"$uploaded_doc\"");//Hochgeladene Datei lschen
            echo'<strong><font color="#FF0000">Hochgeladene Datei wieder gelscht.</strong></font>';
            exit();
            }
    } else {
        echo '<strong><font color="#FF0000">Datei konnte nicht hochgeladen werden !</strong></font>';
        exit();
        }
    while (!(is_writable($pdffile))){
      sleep(1);
    }
    if (!headers_sent()) {
      $header="http://localhost/uploads/".$_FILES['userfile']['name'].".pdf";
      header ("Location: $header");
      exit();
      } else { echo 'Das Resultat befindet sich fr 24 Stunden unter: <a href="http://rechnername/uploads/'.$_FILES['userfile']['name'].'.pdf">'.$_FILES['userfile']['name'].'.pdf</a>'; }
    exit();
}
?>
</BODY>
</HTML>

Comment and Contribute

Your comment has been submitted and is pending approval.

Author:
Mustafa Gzer

Comment:



Comment:

(Maximum characters: 1200). You have characters left.