function report_download_pdf($html) { $doc = new pdf(); //$doc->Header(); $doc->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, 'Teleparadigm', array(), array()); $doc->setFooterData(array(0, 64, 0), array(0, 64, 128)); $doc->setPrintHeader(false); $doc->setPrintFooter(true); // set margins $doc->SetMargins(PDF_MARGIN_LEFT, 5, PDF_MARGIN_RIGHT); $doc->SetHeaderMargin(PDF_MARGIN_HEADER); $doc->SetFooterMargin(PDF_MARGIN_FOOTER); $doc->AddPage(); $doc->writeHTML($html, true, false, true, false, ''); $doc->Output(); die; }
/** * Create PDF object using parameters * * @return PDF */ protected function create_pdf_object() { //Default orientation is Landescape $orientation = 'L'; if ($this->get_instance()->height > $this->get_instance()->width) { $orientation = 'P'; } // Remove commas to avoid a bug in TCPDF where a string containing a commas will result in two strings. $keywords = get_string('keywords', 'simplecertificate') . ',' . format_string($this->get_instance()->coursename, true); $keywords = str_replace(",", " ", $keywords); // Replace commas with spaces. $keywords = str_replace(" ", " ", $keywords); // Replace two spaces with one. $pdf = new pdf($orientation, 'mm', array($this->get_instance()->width, $this->get_instance()->height), true, 'UTF-8'); $pdf->SetTitle($this->get_instance()->name); $pdf->SetSubject($this->get_instance()->name . ' - ' . $this->get_instance()->coursename); $pdf->SetKeywords($keywords); $pdf->setPrintHeader(false); $pdf->setPrintFooter(false); $pdf->SetAutoPageBreak(false, 0); $pdf->setFontSubsetting(true); $pdf->SetMargins(0, 0, 0, true); return $pdf; }
/** * Serves the files from the elang file areas * * @param stdClass $course the course object * @param stdClass $cm the course module object * @param stdClass $context the elang's context * @param string $filearea the name of the file area * @param array $args extra arguments (itemid, path) * @param boolean $forcedownload whether or not force download * @param array $options additional options affecting the file serving * * @return void * * @category files * * @since 0.0.1 */ function elang_pluginfile($course, $cm, $context, $filearea, array $args, $forcedownload, array $options = array()) { global $DB, $CFG, $USER; require_once dirname(__FILE__) . '/locallib.php'; if ($context->contextlevel != CONTEXT_MODULE) { send_file_not_found(); } require_login($course, true, $cm); if (!has_capability('mod/elang:view', $context)) { send_file_not_found(); } if ($filearea == 'subtitle') { $vtt = new \Captioning\Format\WebvttFile(); $idlang = $cm->instance; $records = $DB->get_records('elang_cues', array('id_elang' => $idlang), 'begin ASC'); $elang = $DB->get_record('elang', array('id' => $idlang)); $options = json_decode($elang->options, true); $repeatedunderscore = isset($options['repeatedunderscore']) ? $options['repeatedunderscore'] : 10; $i = 0; $users = $DB->get_records('elang_users', array('id_elang' => $idlang, 'id_user' => $USER->id), '', 'id_cue,json'); foreach ($records as $id => $record) { if (isset($users[$id])) { $data = json_decode($users[$id]->json, true); } else { $data = array(); } $cue = new \Captioning\Format\WebvttCue(\Captioning\Format\WebvttCue::ms2tc($record->begin), \Captioning\Format\WebvttCue::ms2tc($record->end), Elang\generateCueText(json_decode($record->json, true), $data, '-', $repeatedunderscore)); $i++; $cue->setIdentifier($i); $vtt->addCue($cue); } send_file($vtt->build()->getFileContent(), end($args), 0, 0, true, false, 'text/vtt'); } elseif ($filearea == 'pdf') { $idlang = $cm->instance; $records = $DB->get_records('elang_cues', array('id_elang' => $idlang), 'begin ASC'); $elang = $DB->get_record('elang', array('id' => $idlang)); $options = json_decode($elang->options, true); $repeatedunderscore = isset($options['repeatedunderscore']) ? $options['repeatedunderscore'] : 10; require_once $CFG->libdir . '/pdflib.php'; $doc = new pdf(); $doc->SetMargins(isset($options['left']) ? $options['left'] : 20, isset($options['top']) ? $options['top'] : 20); $doc->SetFont('', '', isset($options['size']) ? $options['size'] : 16); $doc->setPrintHeader(false); $doc->setPrintFooter(false); $doc->AddPage(); $doc->WriteHtml('<h1>' . sprintf(get_string('pdftitle', 'elang'), $course->fullname) . '</h1>'); $doc->WriteHtml('<h2>' . sprintf(get_string('pdfsubtitle', 'elang'), Elang\generateTitle($elang, $options), userdate($elang->timecreated, get_string('strftimedaydate'))) . '</h2>'); $doc->WriteHtml($elang->intro); $i = 1; foreach ($records as $id => $record) { $doc->Write(5, '', '', false, '', true); $doc->WriteHtml('<h3>' . sprintf(get_string('pdfcue', 'elang'), $i++, \Captioning\Format\WebvttCue::ms2tc($record->begin), \Captioning\Format\WebvttCue::ms2tc($record->end)) . '</h3>'); $doc->Write(5, Elang\generateCueText(json_decode($record->json, true), array(), '_', $repeatedunderscore), '', false, '', true); } send_file($doc->Output('', 'S'), end($args), 0, 0, true, false, 'application/pdf'); } else { $fs = get_file_storage(); $relativepath = implode('/', $args); $fullpath = rtrim('/' . $context->id . '/mod_elang/' . $filearea . '/0/' . $relativepath, '/'); $file = $fs->get_file_by_hash(sha1($fullpath)); if (!$file) { send_file_not_found(); } send_stored_file($file, 86400, 0, $forcedownload, $options); } }
} /** * Extend the standard PDF class to get access to some protected values we want to display * at the test page. * * @copyright 2009 David Mudrak <*****@*****.**> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ if ($getpdf) { $doc = new pdf(); $doc->SetTitle('Moodle PDF library test'); $doc->SetAuthor('Moodle ' . $CFG->release); $doc->SetCreator('lib/tests/other/pdflibtestpage.php'); $doc->SetKeywords('Moodle, PDF'); $doc->SetSubject('This has been generated by Moodle as its PDF library test page'); $doc->SetMargins(15, 30); $doc->setPrintHeader(true); $doc->setHeaderMargin(10); $doc->setHeaderFont(array($fontfamily, 'b', 10)); $doc->setHeaderData('pix/moodlelogo-med-white.gif', 40, $SITE->fullname, $CFG->wwwroot); $doc->setPrintFooter(true); $doc->setFooterMargin(10); $doc->setFooterFont(array($fontfamily, '', 8)); $doc->AddPage(); $doc->SetTextColor(255, 255, 255); $doc->SetFillColor(255, 203, 68); $doc->SetFont($fontfamily, 'B', 24); $doc->Cell(0, 0, 'Moodle PDF library test', 0, 1, 'C', 1); $doc->SetFont($fontfamily, '', 12); $doc->Ln(6); $doc->SetTextColor(0, 0, 0);
/** * Generate the PDF for the specified customcert and user. * * @param stdClass $customcert * @param bool $preview true if it is a preview, false otherwise */ function customcert_generate_pdf($customcert, $preview = false) { global $CFG, $DB; require_once $CFG->libdir . '/pdflib.php'; // Get the pages for the customcert, there should always be at least one page for each customcert. if ($pages = $DB->get_records('customcert_pages', array('customcertid' => $customcert->id), 'pagenumber ASC')) { // Create the pdf object. $pdf = new pdf(); if (!empty($customcert->protection)) { $protection = explode(', ', $customcert->protection); $pdf->SetProtection($protection); } $pdf->setPrintHeader(false); $pdf->setPrintFooter(false); $pdf->SetTitle($customcert->name); $pdf->SetAutoPageBreak(true, 0); // Remove full-stop at the end, if it exists, to avoid "..pdf" being created and being filtered by clean_filename. $filename = rtrim($customcert->name, '.'); $filename = clean_filename($filename . '.pdf'); // Loop through the pages and display their content. foreach ($pages as $page) { // Add the page to the PDF. if ($page->width > $page->height) { $orientation = 'L'; } else { $orientation = 'P'; } $pdf->AddPage($orientation, array($page->width, $page->height)); $pdf->SetMargins(0, 0, $page->margin); // Get the elements for the page. if ($elements = $DB->get_records('customcert_elements', array('pageid' => $page->id), 'sequence ASC')) { // Loop through and display. foreach ($elements as $element) { // Get an instance of the element class. if ($e = customcert_get_element_instance($element)) { $e->render($pdf, $preview); } } } } $pdf->Output($filename, 'D'); } }
/** * Refactored code from @see certificate_output_completion() * an array of parameters is passed and used by the certificate * template file. It is up to the certificate template file to * use whatever parameters are available * * @param array $params: An array of parameters (example: array('student_name' => 'some value')) * Here are a list of values that can be used * 'student_name', 'course_name', 'class_idnumber', 'class_enrol_time', 'class_enddate', 'class_grade', * 'cert_timeissued', 'cert_code', 'class_instructor_name', 'course_description_name' * (there will most likely be more when other entity types are added) * @param string $border: A custom border image to use * @param string $seal: A custom seal image to use * @param string $template: A custom template to use * @return string - pdf output */ function certificate_output_entity_completion($params, $border = '', $seal = '', $template = '') { global $CFG; // Use the TCPDF library. require_once $CFG->libdir . '/pdflib.php'; // Global settings. $borders = 0; $font = 'FreeSerif'; $largefontsize = 30; $smallfontsize = 16; // Create pdf. $pdf = new pdf('L', 'in', 'Letter'); // Prevent the pdf from printing black bars. $pdf->setPrintHeader(false); $pdf->setPrintFooter(false); $pdf->SetAutoPageBreak(false); $pdf->SetMargins(0, 0, 0, false); $pdf->AddPage(); $pagewidth = $pdf->getPageWidth(); $pageheight = $pdf->getPageHeight(); // Draw the border. cm_certificate_check_data_path('borders'); if (!empty($border)) { if (file_exists($CFG->dirroot . '/local/elisprogram/pix/certificate/borders/' . $border)) { $pdf->Image($CFG->dirroot . '/local/elisprogram/pix/certificate/borders/' . $border, 0, 0, $pagewidth, $pageheight); } else { if (file_exists($CFG->dataroot . '/local/elisprogram/pix/certificate/borders/' . $border)) { $pdf->Image($CFG->dataroot . '/local/elisprogram/pix/certificate/borders/' . $border, 0, 0, $pagewidth, $pageheight); } } } // Draw the seal. cm_certificate_check_data_path('seals'); if (!empty($seal)) { if (file_exists($CFG->dirroot . '/local/elisprogram/pix/certificate/seals/' . $seal)) { $pdf->Image($CFG->dirroot . '/local/elisprogram/pix/certificate/seals/' . $seal, 8.0, 5.8); } else { if (file_exists($CFG->dataroot . '/local/elisprogram/pix/certificate/seals/' . $seal)) { $pdf->Image($CFG->dataroot . '/local/elisprogram/pix/certificate/seals/' . $seal, 8.0, 5.8); } } } // Include the certificate template. cm_certificate_check_data_path('templates'); if (file_exists($CFG->dirroot . '/local/elisprogram/pix/certificate/templates/' . $template)) { include $CFG->dirroot . '/local/elisprogram/pix/certificate/templates/' . $template; } else { if (file_exists($CFG->dataroot . '/local/elisprogram/pix/certificate/templates/' . $template)) { include $CFG->dataroot . '/local/elisprogram/pix/certificate/templates/' . $template; } } $pdf->Output(); }