diff --git a/content/pdfExport.php b/content/pdfExport.php index 08b7e60e6..65dc698da 100644 --- a/content/pdfExport.php +++ b/content/pdfExport.php @@ -126,6 +126,8 @@ if(isset($_GET['all'])) $params.='&all='.$_GET['all']; if(isset($_GET["lvid"])) $params.='&lvid='.$_GET["lvid"]; +if(isset($_GET['projekt_kurzbz'])) + $params.='&projekt_kurzbz='.$_GET['projekt_kurzbz']; if(isset($_GET['version']) && is_numeric($_GET['version'])) $version = $_GET['version']; else @@ -241,21 +243,10 @@ $filename=$xsl.$nachname; if (!isset($_REQUEST["archive"])) { - if(PDF_CREATE_FUNCTION=='FOP') + if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument')) { - $fop = new fop(); - $xml = $xml_doc->saveXML(); - //$xml = ''; - //$xsl='foobar'; - $fop->generatePdf($xml, $xsl_content, $filename, "D"); - } - else - { - $fo2pdf = new XslFo2Pdf(); - // Load the XSL source $xsl_doc = new DOMDocument; - if(!$xsl_doc->loadXML($xsl_content)) die('unable to load xsl'); @@ -264,9 +255,69 @@ if (!isset($_REQUEST["archive"])) $proc->importStyleSheet($xsl_doc); // attach the xsl rules $buffer = $proc->transformToXml($xml_doc); - if (!$fo2pdf->generatePdf($buffer, $filename, "D")) + //echo $buffer; + //exit; + $tempname_content = tempnam('/tmp','vorlage'); + file_put_contents($tempname_content, $buffer); + $zipfile = DOC_ROOT.'system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.ods'; + $tempname_zip = tempnam('/tmp','zip'); + if(copy($zipfile, $tempname_zip)) { - echo('Failed to generate PDF'); + $zip = new ZipArchive; + if ($zip->open($tempname_zip) === TRUE) + { + $zip->addFile($tempname_content, 'content.xml'); + $zip->close(); + + clearstatcache(); + $fsize = filesize($tempname_zip); + $handle = fopen($tempname_zip,'r'); + header('Content-type: '.$vorlage->mimetype); + header('Content-Disposition: attachment; filename="'.$vorlage->vorlage_kurzbz.'.ods"'); + header('Content-Length: '.$fsize); + while (!feof($handle)) + { + echo fread($handle, 8192); + } + fclose($handle); + unlink($tempname_zip); + unlink($tempname_content); + } + else + { + echo 'Fehler beim Oeffnen des Zip Files'; + } + } + } + else + { + if(PDF_CREATE_FUNCTION=='FOP') + { + $fop = new fop(); + $xml = $xml_doc->saveXML(); + //$xml = ''; + //$xsl='foobar'; + $fop->generatePdf($xml, $xsl_content, $filename, "D"); + } + else + { + $fo2pdf = new XslFo2Pdf(); + + // Load the XSL source + $xsl_doc = new DOMDocument; + + if(!$xsl_doc->loadXML($xsl_content)) + die('unable to load xsl'); + + // Configure the transformer + $proc = new XSLTProcessor; + $proc->importStyleSheet($xsl_doc); // attach the xsl rules + + $buffer = $proc->transformToXml($xml_doc); + if (!$fo2pdf->generatePdf($buffer, $filename, "D")) + { + echo('Failed to generate PDF'); + } } } }