cvs: php4 /pear/Experimental/XML fo2pdf.php

From: Date: Sat, 31 Mar 2001 13:38:58 +0000
Subject: cvs: php4 /pear/Experimental/XML fo2pdf.php
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4925@lists.php.net to get a copy of this message
chregu Sat Mar 31 05:38:58 2001 EDT Modified files: /php4/pear/Experimental/XML fo2pdf.php Log: - converted tabs to spaces - more links in the docs about xsl:fo

Index: php4/pear/Experimental/XML/fo2pdf.php diff -u php4/pear/Experimental/XML/fo2pdf.php:1.5 php4/pear/Experimental/XML/fo2pdf.php:1.6 --- php4/pear/Experimental/XML/fo2pdf.php:1.5 Fri Mar 30 04:55:07 2001 +++ php4/pear/Experimental/XML/fo2pdf.php Sat Mar 31 05:38:58 2001 @@ -15,7 +15,7 @@ // | Authors: Christian Stocker <chregu@nomad.ch> | // +----------------------------------------------------------------------+ // -// $Id: fo2pdf.php,v 1.5 2001/03/30 12:55:07 chregu Exp $ +// $Id: fo2pdf.php,v 1.6 2001/03/31 13:38:58 chregu Exp $ /** @@ -23,9 +23,16 @@ * * with fo (formating objects) it's quite easy to convert xml-documents into * pdf-docs. -* +* * An introduction into formating objects can be found at * http://www.w3.org/TR/xsl/slice6.html#fo-section +* http://www.ibiblio.org/xml/books/bible/updates/15.html +* A tutorial is here: +* http://www.xml.com/pub/a/2001/01/17/xsl-fo/ +* http://www.xml.com/pub/a/2001/01/24/xsl-fo/ +* A html_to_fo.xsl can also be found there +* http://www.xml.com/2001/01/24/xsl-fo/fop_article.tgz +* but it didn't work for my simple xhtml files.. * * The way to use this class is, produce a fo-file from a xml-file with a * xsl-stylesheet, then feed this class with this fo-file and you get a pdf @@ -44,9 +51,9 @@ * Furthermore you have to compile your php with --with-java and to adjust * your php.ini file. It can be a rather painful task to get java and php * to work together. -* See http://www.phpbuilder.com/columns/marknold20001221.php3 or -* http://www.linuxwebdevnews.com/articles/php-java-xslt.php?pid=347 -* for more details about java and php or ask me, if you're stuck +* See http://www.phpbuilder.com/columns/marknold20001221.php3 or +* http://www.linuxwebdevnews.com/articles/php-java-xslt.php?pid=347 +* for more details about java and php or ask me, if you're stuck * (especially with linux. windows is not my area..) * * Todo: @@ -84,191 +91,191 @@ * print $cache->end("+30"); * * @author Christian Stocker <chregu@nomad.ch> -* @version $Id: fo2pdf.php,v 1.5 2001/03/30 12:55:07 chregu Exp $ +* @version $Id: fo2pdf.php,v 1.6 2001/03/31 13:38:58 chregu Exp $ * @package XML */ class XML_fo2pdf { - /** - * fo-file used in this class - * - * @var string - */ - var $fo = ""; - - /** - * pdf-file used in this class - * - * @var string - */ - var $pdf = ""; - - /** - * Where the temporary fo and pdf files should be stored - * - * @var string - */ - var $tmpdir = "/tmp"; - - /** - * A prefix for the temporary files - * - * @var string - */ - var $tmppdfprefix = "pdffo"; - - - /** - * constructor - * One can pass an input fo-file already here (the other possibility - * is with the run or runFromString method). - * and if the pdf should be stored permanently, a filename/path for - * that can also be passed here. - * - * @param string file input fo-file - * @param string file output pdf-file - * @see run(), runFromString(), runFromFile() - */ - function xml_fo2pdf($fo = "", $pdf = "") - { - if ($fo) { - $this->run($fo, $pdf); - } - } - - /** - * Calls the Main Fop-Java-Programm - * - * One has to pass an input fo-file - * and if the pdf should be stored permanently, a filename/path for - * the pdf. - * if the pdf is not passed or empty/false, a temporary pdf-file - * will be created - * - * @param string file input fo-file - * @param string file output pdf-file - * @param boolean if the fo should be deleted after execution - * @see runFromString() - */ - function run($fo, $pdf = "", $DelFo = False) - { - if (!$pdf) - $pdf = tempnam($this->tmpdir, $this->tmppdfprefix); - - $this->pdf = $pdf; - $this->fo = $fo; - $options = array($this->fo, $this->pdf); - $java = new Java("org.apache.fop.apps.CommandLine", $options); - $java->run(); - if ($DelFo) { - $this->deleteFo($fo); - } - } - - /** - * If the fo is a string, not a file, use this. - * - * If you generate the fo dynamically (for example with a - * xsl-stylesheet), you can use this method - * - * The Fop-Java program needs a file as an input, so a - * temporary fo-file is created here (and will be deleted - * in the run() function.) - * - * @param string fo input fo-string - * @param string file output pdf-file - * @see run() - */ - function runFromString($fostring, $pdf = "") - { - $fo = tempnam($this->tmpdir, $this->tmppdfprefix); - $fp = fopen($fo, "w+"); - fwrite($fp, $fostring); - fclose($fp); - $this->run($fo, $pdf, True); - } - /** - * A wrapper to run for better readabilty - * - * This method just calls run.... - * - * @param string fo input fo-string - * @param string file output pdf-file - * @see run() - */ - function runFromFile($fo, $pdf = "") - { - return $this->run($fo, $pdf); - } - - /** - * Deletes the created pdf - * - * If you dynamically create pdfs and you store them - * for example in a Cache, you don't need it afterwards. - * If no pdf is given, the one generated in run() is deleted - * - * @param string file output pdf-file - */ - function deletePDF($pdf = "") - { - if (!$pdf) - $pdf = $this->pdf; - unlink ($pdf); - } - - /** - * Deletes the created fo - * - * If you dynamically create fos, you don't need it afterwards. - * If no fo-file is given, the one generated in run() is deleted - * - * @param string file input fo-file - */ - function deleteFo($fo = "") - { - if (!$fo) - $fo = $this->fo; - - unlink ($fo); - } - - /** - * Prints the content header and the generated pdf to the output - * - * If you want to dynamically generate pdfs and return them directly - * to the browser, use this. - * If no pdf-file is given, the generated from run() is taken. - * - * @param string file output pdf-file - * @see returnPDF() - */ - function printPDF($pdf = "") - { - $pdf = $this->returnPDF($pdf); - Header("Content-type: application/pdf\nContent-Length: " . strlen($pdf)); - print $pdf; - } - - /** - * Returns the pdf - * - * If no pdf-file is given, the generated from run() is taken. - * - * @param string file output pdf-file - * @return string pdf - * @see run() - */ - function returnPDF($pdf = "") - { - if (!$pdf) - $pdf = $this->pdf; - - $fd = fopen($pdf, "r"); - $content = fread( $fd, filesize($pdf) ); - fclose($fd); - return $content; + /** + * fo-file used in this class + * + * @var string + */ + var $fo = ""; + + /** + * pdf-file used in this class + * + * @var string + */ + var $pdf = ""; + + /** + * Where the temporary fo and pdf files should be stored + * + * @var string + */ + var $tmpdir = "/tmp"; + + /** + * A prefix for the temporary files + * + * @var string + */ + var $tmppdfprefix = "pdffo"; + + + /** + * constructor + * One can pass an input fo-file already here (the other possibility + * is with the run or runFromString method). + * and if the pdf should be stored permanently, a filename/path for + * that can also be passed here. + * + * @param string file input fo-file + * @param string file output pdf-file + * @see run(), runFromString(), runFromFile() + */ + function xml_fo2pdf($fo = "", $pdf = "") + { + if ($fo) { + $this->run($fo, $pdf); + } + } + + /** + * Calls the Main Fop-Java-Programm + * + * One has to pass an input fo-file + * and if the pdf should be stored permanently, a filename/path for + * the pdf. + * if the pdf is not passed or empty/false, a temporary pdf-file + * will be created + * + * @param string file input fo-file + * @param string file output pdf-file + * @param boolean if the fo should be deleted after execution + * @see runFromString() + */ + function run($fo, $pdf = "", $DelFo = False) + { + if (!$pdf) + $pdf = tempnam($this->tmpdir, $this->tmppdfprefix); + + $this->pdf = $pdf; + $this->fo = $fo; + $options = array($this->fo, $this->pdf); + $java = new Java("org.apache.fop.apps.CommandLine", $options); + $java->run(); + if ($DelFo) { + $this->deleteFo($fo); + } + } + + /** + * If the fo is a string, not a file, use this. + * + * If you generate the fo dynamically (for example with a + * xsl-stylesheet), you can use this method + * + * The Fop-Java program needs a file as an input, so a + * temporary fo-file is created here (and will be deleted + * in the run() function.) + * + * @param string fo input fo-string + * @param string file output pdf-file + * @see run() + */ + function runFromString($fostring, $pdf = "") + { + $fo = tempnam($this->tmpdir, $this->tmppdfprefix); + $fp = fopen($fo, "w+"); + fwrite($fp, $fostring); + fclose($fp); + $this->run($fo, $pdf, True); + } + /** + * A wrapper to run for better readabilty + * + * This method just calls run.... + * + * @param string fo input fo-string + * @param string file output pdf-file + * @see run() + */ + function runFromFile($fo, $pdf = "") + { + return $this->run($fo, $pdf); + } + + /** + * Deletes the created pdf + * + * If you dynamically create pdfs and you store them + * for example in a Cache, you don't need it afterwards. + * If no pdf is given, the one generated in run() is deleted + * + * @param string file output pdf-file + */ + function deletePDF($pdf = "") + { + if (!$pdf) + $pdf = $this->pdf; + unlink ($pdf); + } + + /** + * Deletes the created fo + * + * If you dynamically create fos, you don't need it afterwards. + * If no fo-file is given, the one generated in run() is deleted + * + * @param string file input fo-file + */ + function deleteFo($fo = "") + { + if (!$fo) + $fo = $this->fo; + + unlink ($fo); + } + + /** + * Prints the content header and the generated pdf to the output + * + * If you want to dynamically generate pdfs and return them directly + * to the browser, use this. + * If no pdf-file is given, the generated from run() is taken. + * + * @param string file output pdf-file + * @see returnPDF() + */ + function printPDF($pdf = "") + { + $pdf = $this->returnPDF($pdf); + Header("Content-type: application/pdf\nContent-Length: " . strlen($pdf)); + print $pdf; + } + + /** + * Returns the pdf + * + * If no pdf-file is given, the generated from run() is taken. + * + * @param string file output pdf-file + * @return string pdf + * @see run() + */ + function returnPDF($pdf = "") + { + if (!$pdf) + $pdf = $this->pdf; + + $fd = fopen($pdf, "r"); + $content = fread( $fd, filesize($pdf) ); + fclose($fd); + return $content; } }
« previous php.cvs (#4925) next »