private function reporteTBSOO($informe) { define('BASE', sfConfig::get('sf_app_module_dir') . '/informes/lib/'); require_once BASE . 'tbs_class_php5.php'; require_once BASE . 'tbsooo_class.php'; $OOo = new clsTinyButStrongOOo(); $OOo->noErr = true; $OOo->SetZipBinary('zip'); $OOo->SetUnzipBinary('unzip'); $OOo->SetProcessDir(sfConfig::get('sf_informe_dir')); $OOo->SetDataCharset('UTF8'); $OOo->NewDocFromTpl(sfConfig::get('sf_informe_dir') . DIRECTORY_SEPARATOR . $informe->getAdjunto()->getRuta()); $OOo->LoadXmlFromDoc('content.xml'); $aVariable = $this->leerTemplate($OOo->Source); $aDato = array(); //busco en las variables encontradas en el template y reemplaza contenido $aDato = $this->llenarVariables($aVariable); //agregando datos del registro informe $aDato['informe'] = $informe->toArray(); // variables adicionales dinamicas de los formulario if ($informe->getVariables()) { $aDato['variable'] = array(); $variables = explode(";", $informe->getVariables()); foreach ($variables as $variable) { $pos = stripos($variable, ":"); if ($pos) { $variable = substr($variable, 0, $pos); } $aDato['variable'] = array_merge($aDato['variable'], array($variable => $this->getRequestParameter($variable))); } } // lleno finalmente de diferente forma si es un array (ciclo) o no (variable comun) if (is_array($aDato)) { foreach ($aDato as $idx => $dato) { if ($this->isNotAssocArray($dato)) { $OOo->MergeBlock($idx, "array", $dato); } else { $OOo->MergeField($idx, $dato); } } } $OOo->SaveXmlToDoc(); // OJO hay headers locos para que funcione en internet explorer header('Content-type: ' . $OOo->GetMimetypeDoc()); //header("Content-Type: application/force-download"); //para que funcione en konqueror header("Cache-Control: public, must-revalidate"); header("Pragma: hack"); header('Content-Length: ' . filesize($OOo->GetPathnameDoc())); header('Content-Disposition: attachment; filename="informe' . $informe->getNombre() . '.odt"'); header("Content-Transfer-Encoding: binary"); $OOo->FlushDoc(); $OOo->RemoveDoc(); }
<?php include_once '../tbs_class.php'; include_once '../tbsooo_class.php'; // datas $x = 'Hello World'; // instantiate a TBS OOo class $OOo = new clsTinyButStrongOOo(); // setting the object $OOo->SetZipBinary('zip'); $OOo->SetUnzipBinary('unzip'); $OOo->SetProcessDir('tmp/'); // create a new openoffice document from the template with an unique id $OOo->NewDocFromTpl('tbsooo_us_examples_hello.sxw'); // merge data with openoffice file named 'content.xml' $OOo->LoadXmlFromDoc('content.xml'); $OOo->SaveXmlToDoc(); // display header('Content-type: ' . $OOo->GetMimetypeDoc()); header('Content-Length: ' . filesize($OOo->GetPathnameDoc())); $OOo->FlushDoc(); $OOo->RemoveDoc();
// I N I T // ============================================================================ // instantiate a TBS OOo class $OOo = new clsTinyButStrongOOo(); // set the binary ZIP //$OOo->SetZipBinary('/usr/bin/zip', true); if ($OOo->SetZipBinary('zip', true) == false) { die; } // set the binary UNZIP //$OOo->SetUnzipBinary('/usr/bin/unzip', true); if ($OOo->SetUnzipBinary('unzip', true) == false) { die; } // set the process directory if ($OOo->SetProcessDir('tmp/') == false) { die; } // ============================================================================ // D A T A S // ============================================================================ // globals $i_invoice = '05123456'; $d_invoice = '2005-07-06'; $f_vat_rate = 19.6; // block for shipping address $blk_ship = array(); $blk_ship[] = array('s_lastname' => '*****@*****.**', 's_firstname' => '', 's_company' => 'RMLL', 's_adress1' => 'Faculté des sciences Mirande', 's_adress2' => '6 bd Gabriel', 's_adress3' => '', 's_city' => 'DIJON', 's_zip' => '21000', 's_country' => 'France'); // block for content of invoice $blk_content = array(); $blk_content[] = array('i_num' => 1, 's_ref' => '3400507000089', 's_ean' => '', 's_design' => 'BODY tag T-Shirt', 'f_eur' => 14.99, 'f_teur' => 0);
} else { $rne=''; } $nom_dossier_modele_a_utiliser="../../mod_ooo/mes_modeles/".$rne; } else{ $nom_dossier_modele_a_utiliser="../../mod_ooo/modeles_gepi/"; } // TODO vérifier les chemins comme /mod_ooo/lib/chemin.inc.php // Création d'une classe TBS OOo class $OOo = new clsTinyButStrongOOo; $OOo->SetDataCharset('UTF-8'); // setting the object $OOo->SetProcessDir($nom_dossier_temporaire ); //dossier où se fait le traitement (décompression / traitement / compression) // create a new openoffice document from the template with an unique id //$OOo->createFrom($nom_dossier_modele_a_utiliser.$nom_fichier_modele_ooo); // le chemin du fichier est indiqué à partir de l'emplacement de ce fichier // create a new openoffice document from the template with an unique id $OOo->NewDocFromTpl($nom_dossier_modele_a_utiliser.$nom_fichier_modele_ooo); // le chemin du fichier est indiqué à partir de l'emplacement de ce fichier // merge data with openoffice file named 'content.xml' //$OOo->loadXml($nom_fichier_xml_a_traiter); //Le fichier qui contient les variables et doit être parsé (il sera extrait) $OOo->LoadXmlFromDoc($nom_fichier_xml_a_traiter); //Le fichier qui contient les variables et doit être parsé (il sera extrait) // Traitement des tableaux // On insère ici les lignes concernant la gestion des tableaux $OOo->MergeBlock('eleves',$tab_eleves_OOo); $OOo->SaveXmlToDoc(); //traitement du fichier extrait
// Gestion du multisite if ($_SESSION['rne'] != '') { $rne = $_SESSION['rne'] . "/"; } else { $rne = ''; } $nom_dossier_modele_a_utiliser = "../../mod_ooo/mes_modeles/" . $rne; } else { $nom_dossier_modele_a_utiliser = "../../mod_ooo/modeles_gepi/"; } // TODO vérifier les chemins comme /mod_ooo/lib/chemin.inc.php // Création d'une classe TBS OOo class $OOo = new clsTinyButStrongOOo(); $OOo->SetDataCharset('UTF-8'); // setting the object $OOo->SetProcessDir($nom_dossier_temporaire); //dossier où se fait le traitement (décompression / traitement / compression) // create a new openDocument document from the template with an unique id //$OOo->createFrom($nom_dossier_modele_a_utiliser.$nom_fichier_modele_ooo); // le chemin du fichier est indiqué à partir de l'emplacement de ce fichier // create a new openDocument document from the template with an unique id $OOo->NewDocFromTpl($nom_dossier_modele_a_utiliser . $nom_fichier_modele_ooo); // le chemin du fichier est indiqué à partir de l'emplacement de ce fichier // merge data with openDocument file named 'content.xml' //$OOo->loadXml($nom_fichier_xml_a_traiter); //Le fichier qui contient les variables et doit être parsé (il sera extrait) $OOo->LoadXmlFromDoc($nom_fichier_xml_a_traiter); //Le fichier qui contient les variables et doit être parsé (il sera extrait) // Traitement des tableaux // On insère ici les lignes concernant la gestion des tableaux $OOo->MergeBlock('eleves', $tab_eleves_OOo); $OOo->SaveXmlToDoc(); //traitement du fichier extrait
function export2odt($template_full_path, $template_mime_type, $data, $display, $save_path=""){ $data_vars = $data["data_vars"]; $data_blocks = $data["data_blocks"]; // instantiate a TBS OOo class $OOo = new clsTinyButStrongOOo; // setting the object if ($OOo->SetZipBinary('zip', true) == false) { // erreur zip non présent } if ($OOo->SetUnzipBinary('unzip', true) == false) { // erreur unzip non présent } if ($OOo->SetProcessDir('/tmp/') == false) { // erreur /tmp inaccessible } // create a new openoffice document from the template with an unique id $OOo->NewDocFromTpl($template_full_path); // merge data with OOo file content.xml $OOo->LoadXmlFromDoc('content.xml'); // load Data foreach($data_vars as $key => $value){ $GLOBALS[$key] = $value; } // Merge Data foreach ($data_blocks as $key => $value) { $OOo->MergeBlock($key, $value); } $OOo->SaveXmlToDoc(); if ($display){ if ($template_mime_type == "") $template_mime_type = $OOo->GetMimetypeDoc(); if ($template_mime_type == "") $template_mime_type = "sxw"; header('Content-type: '.$template_mime_type); header('Content-Length: '.filesize($OOo->GetPathnameDoc())); header('Content-Disposition: inline; filename=cv.'.$template_mime_type); $OOo->FlushDoc(); $OOo->RemoveDoc(); } else { if ($save_path != "") { rename($OOo->GetPathnameDoc(), $save_path); // affichage des document sauvés ????? } } }