$context->fillTemplate($template_footer); $footer = CCompteRendu::getSpecialModel($user, "CPatient", "[PIED DE PAGE MOZAIC]"); if ($footer->_id) { $footer->loadContent(); $template_footer->renderDocument($footer->_source); } else { $template_footer->document = "<p style=\"text-align:center;\">" . CMbDT::dateToLocale(CMbDT::dateTime()) . "</p>"; } // main body $_dispo = explode("_", $dispo); $_dispos = explode("x", $_dispo[1]); $cols = $_dispos[0]; $lines = $_dispos[1]; $content = "<html>\n<head>\n<style>\n body {border:0;margin:0; position:relative;}\n #header, #footer {position:absolute; top: 0; width:100%; overflow: hidden;}\n #footer {top:25cm;}\n #body {height:23cm; width:100%; border-collapse: collapse; table-layout: fixed; position: absolute; top: 2cm;}\n #images {position:relative; width: 100%; height:100%;}\n #body div.col {\n position: absolute;\n overflow: hidden;\n line-height: 100%;\n max-width: 100%;\n text-align: center;\n vertical-align: middle!important;\n }\n\n #images img {\n box-shadow: 0 0 5px #b8b8b8;\n }\n\n #body p {\n position:absolute;\n bottom:0;\n left:0;\n width:100%;\n text-align: center;\n }\n\n #body p span {\n background-color:white;\n border:solid 1px #6e6e6e;\n padding:3px;\n }\n\n .droppable {\n padding:4px;\n }\n\n #body img {max-width:100%; max-height: 100%;}\n .nb_line_1 {height:100%;}\n .nb_line_2 {height:50%;}\n .nb_line_3 {height:33%;}\n\n .nb_col_1 {width:100%;}\n .nb_col_2 {width:50%;}\n .nb_col_3 {width:33%;}\n\n .line_1 {top:0;}\n .nb_line_2.line_2 {top:50%;}\n .nb_line_3.line_2 {top:33%;}\n .nb_line_3.line_3 {top:66%;}\n\n .col_1 {left:0;}\n .nb_col_2.col_2 {left:50%;}\n .nb_col_3.col_2 {left:33%;}\n .nb_col_3.col_3 {left:66%;}\n\n</style>\n</head>\n<body>\n<div id=\"header\">{$template_header->document}</div>\n<div id=\"body\"><div id=\"images\">"; for ($a = 1; $a <= $lines; $a++) { for ($b = 1; $b <= $cols; $b++) { $content .= "\n <div class=\"col nb_col_{$cols} nb_line_{$lines} col_{$b} line_{$a}\">"; $content .= $data[$_dispo[1] . "_" . $a . "x" . $b]["file_id"] ? "<img src=\"" . $data[$_dispo[1] . "_" . $a . "x" . $b]["file_uri"] . "\" alt=\"\"/>" : null; $content .= $data[$_dispo[1] . "_" . $a . "x" . $b]["file_id"] ? "<p><span>" . $data[$_dispo[1] . "_" . $a . "x" . $b]["name"] . "</span></p>" : null; $content .= "\n </div>"; } } $content .= "\n</div>\n</div>\n<div id=\"footer\">{$template_footer->document}</div>\n</body>\n</html>"; ob_clean(); $htmltopdf = new CHtmlToPDF("CWkHtmlToPDFConverter"); $htmltopdf->generatePDF($content, $print, $cr, $file); if ($file->_id) { $file->doc_size = filesize($file->_file_path); $file->store(); } CApp::rip();
/** @var $_node DOMElement */ if ($_node->nodeName === "span" && ($_node->getAttribute("class") === "name" || $_node->getAttribute("class") === "field") && $_node->childNodes->length != 1 && $_node->firstChild && ($_node->firstChild->nodeType != XML_TEXT_NODE || !preg_match("/\\[.+\\]/", $_node->nodeValue))) { return true; } if ($_node->childNodes) { searchSpan($_node); } } return false; } $compte_rendu = new CCompteRendu(); $where = array(); $where["object_id"] = "IS NULL"; $compte_rendus = $compte_rendu->loadList($where, null, "350000"); /** @var $compte_rendus CCompteRendu[] */ $list = array(); /** @var DOMDocument $xml */ $xml = new DOMDocument('1.0', 'iso-8859-1'); foreach ($compte_rendus as $_compte_rendu) { mbLog($_compte_rendu->_id); $_compte_rendu->loadContent(); $content = CMbString::convertHTMLToXMLEntities($_compte_rendu->_source); $content = utf8_encode(CHtmlToPDF::cleanWord($content)); $xml->loadXML("<div>" . $content . "</div>"); if (searchSpan($xml->documentElement)) { $list[] = $_compte_rendu; } } $smarty = new CSmartyDP(); $smarty->assign("list", $list); $smarty->display("inc_update_class_fields.tpl");
/** * Suppression des balises fonts imbriquées * * @param DOMNode &$node noeud à parcourir * * @return void */ function recursiveRemoveNestedFont(DOMNode &$node) { if (!$node->hasChildNodes()) { return; } foreach ($node->childNodes as $child) { /** @var DOMElement $node->firstChild */ if ($node->nodeName == "font" && $child->nodeName == "font" && $node->firstChild && $node->firstChild === $node->lastChild) { if ($node->firstChild->getAttribute("family") == "") { $node->firstChild->setAttribute("family", $node->getAttribute("family")); } $child = $node->removeChild($node->firstChild); $parent = $node->parentNode; $parent->insertBefore($child, $node); $parent->removeChild($node); } CHtmlToPDF::recursiveRemoveNestedFont($child); } }
$file->file_type = "application/pdf"; $file->author_id = $user_id; $file->fillFields(); $file->updateFormFields(); $file->forceDir(); } if ($file->_id && !file_exists($file->_file_path)) { $file->forceDir(); } $file->file_name = $compte_rendu->nom . ".pdf"; $c1 = preg_replace("!\\s!", '', $save_content); $c2 = preg_replace("!\\s!", '', $compte_rendu->_source); // Si la source envoyée et celle présente en base sont différentes, on regénère le PDF // Suppression des espaces, tabulations, retours chariots et sauts de lignes pour effectuer le md5 if ($compte_rendu->valide || md5($c1) != md5($c2) || !$file->_id || !file_exists($file->_file_path) || file_get_contents($file->_file_path) == "") { $htmltopdf = new CHtmlToPDF($compte_rendu->factory); $content = CCompteRendu::restoreId($content); $htmltopdf->generatePDF($content, 0, $compte_rendu, $file); $file->doc_size = filesize($file->_file_path); } // Il peut y avoir plusieurs cfiles pour un même compte-rendu, à cause // de n requêtes simultanées pour la génération du pdf. // On supprime donc les autres cfiles. $compte_rendu->loadRefsFiles(); $files = $compte_rendu->_ref_files; if ($file->_id) { unset($files[$file->_id]); } foreach ($files as $_file) { $_file->delete(); }
/** * Stream document for object * * @param CCompteRendu $compte_rendu Document * @param CMbObject $object Object * @param string $factory Factory name * * @return void */ static function streamDocForObject($compte_rendu, $object, $factory = null) { ob_clean(); $template = new CTemplateManager(); $source = $compte_rendu->getFullContentFromModel(); $object->fillTemplate($template); $template->renderDocument($source); $htmltopdf = new CHtmlToPDF($factory); $htmltopdf->generatePDF($template->document, 1, $compte_rendu, new CFile()); CApp::rip(); }
<?php /** * $Id$ * * @package Mediboard * @subpackage System * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ */ $data = CValue::post("data"); $filename = CValue::post("filename", "data"); $data = stripslashes($data); // @todo Inclure la CSS de MB $data = "\r\n<html>\r\n <head>\r\n <title>{$filename}</title>\r\n <style type=\"text/css\">\r\n \r\n " . file_get_contents("style/mediboard/htmlarea.css") . "\r\n \r\n table.tbl th,\r\n table.tbl td {\r\n padding: 0.5pt; \r\n }\r\n \r\n .not-printable {\r\n display: none; \r\n }\r\n </style>\r\n </head>\r\n <body>{$data}</body>\r\n</html>"; $file = new CFile(); $file->file_name = $filename; $cr = new CCompteRendu(); $cr->_page_format = "A4"; $cr->_orientation = "landscape"; $convert = new CHtmlToPDF(); @$convert->generatePDF($data, 1, $cr, $file);