function PDFLib_GRenderer($format = null, $orientation = 'landscape') { // Null size does not create a graphic. $this->styles = array(); $this->font = null; if (!is_null($format)) { $size = $this->_getFormat($format, $orientation); $this->width = $size[0]; $this->height = $size[1]; $this->pdf = pdf_new(); pdf_open_file($this->pdf, ''); pdf_begin_page($this->pdf, $this->width, $this->height); $this->font = pdf_findfont($this->pdf, 'Helvetica', 'builtin', 0); } }
public function createPDF($fname) { $pdf = pdf_new(); pdf_open_file($pdf, ''); $image = pdf_load_image($pdf, "png", $fname, ""); $w = pdf_get_value($pdf, "imagewidth", $image); $h = pdf_get_value($pdf, "imageheight", $image); pdf_begin_page($pdf, $w * 2, $h * 2); pdf_place_image($pdf, $image, $w / 2, $h / 2, 1); pdf_end_page($pdf); pdf_close($pdf); $mybuf = PDF_get_buffer($pdf); $mylen = strlen($mybuf); header("Content-type: application/pdf"); header("Content-Length: {$mylen}"); header("Content-Disposition: inline; filename=chart.pdf"); print $mybuf; PDF_delete($pdf); unlink($fname); }
function reset(&$media) { OutputDriverGenericPDF::reset($media); // Check if PDFLIB is available if (!extension_loaded('pdf')) { // Try to use "dl" to dynamically load PDFLIB $result = dl(PDFLIB_DL_PATH); if (!$result) { readfile(HTML2PS_DIR . 'templates/missing_pdflib.html'); error_log("No PDFLIB extension found"); die("HTML2PS Error"); } } $this->pdf = pdf_new(); // Set PDF compatibility level pdf_set_parameter($this->pdf, "compatibility", $this->get_pdf_version()); /** * Use PDF license key, if present * * PDFLIB_LICENSE constant is defined in 'config.inc.php' file in "PDFLIB-specific" section. */ if (defined("PDFLIB_LICENSE")) { pdf_set_parameter($this->pdf, "license", PDFLIB_LICENSE); } pdf_open_file($this->pdf, $this->get_filename()); // @TODO: compression level, debug pdf_set_value($this->pdf, "compress", 0); // Set path to the PDFLIB UPR file containig information about fonts and encodings if (defined("PDFLIB_UPR_PATH")) { pdf_set_parameter($this->pdf, "resourcefile", PDFLIB_UPR_PATH); } // Setup encodings not bundled with PDFLIB $filename = $this->generate_cpg('koi8-r'); pdf_set_parameter($this->pdf, 'Encoding', sprintf('koi8-r=%s', $filename)); // Setup font outlines global $g_font_resolver_pdf; $g_font_resolver_pdf->setup_ttf_mappings($this->pdf); $pdf = $this->pdf; pdf_set_info($pdf, "Creator", "html2ps (PHP version)"); // No borders around links in the generated PDF pdf_set_border_style($this->pdf, "solid", 0); $this->_status = PDFLIB_STATUS_DOCUMENT_STARTED; }
/** * Create the PDF canvas. * * Parameters available: * * 'page' Specify the page/paper format for the graph's page, available * formats are: A0, A1, A2, A3, A4, A5, A6, B5, letter, legal, ledger, * 11x17, cd_front, inlay, inlay_nosides * * 'align' Alignment of the graph on the page, available options are: * topleft, topcenter, topright, leftcenter, center, rightcenter, * leftbottom, centerbottom, rightbottom * * 'orientation' Specifies the paper orientation, default is 'portrait' and * 'landscape' is also supported. * * 'creator' The creator tag of the PDF/graph * * 'author' The author tag of the PDF/graph * * 'title' The title tag of the PDF/graph * * 'width' The width of the graph on the page * * 'height' The height of the graph on the page * * 'left' The left offset of the graph on the page * * 'top' The top offset of the graph on the page * * 'filename' The PDF file to open/add page to, using 'filename' requires * the commercial version of PDFlib (http://www.pdflib.com/), this has for * obvious ($ 450) reasons not been tested * * 'pdf' An existing PDFlib PDF document to add the page to * * 'add_page' (true/false) Used together with 'pdf', to specify whether the * canvas should add a new graph page (true) or create the graph on the * current page (false), default is 'true' * * The 'page' and 'width' & 'height' can be mutually omitted, if 'page' is * omitted the page is created using dimensions of width x height, and if * width and height are omitted the page dimensions are used for the graph. * * If 'pdf' is specified, 'filename', 'creator', 'author' and 'title' has no * effect. * * 'left' and 'top' are overridden by 'align' * * It is required either to specify 'width' & 'height' or 'page'. * * The PDF format/PDFlib has some limitations on the capabilities, which * means some functionality available using other canvass (fx. alpha * blending and gradient fills) are not supported with PDF (see Canvas.txt * in the docs/ folder for further details) * * @param array $param Parameter array */ function Image_Canvas_PDF($param) { if (isset($param['page'])) { switch (strtoupper($param['page'])) { case 'A0': $this->_pageWidth = 2380; $this->_pageHeight = 3368; break; case 'A1': $this->_pageWidth = 1684; $this->_pageHeight = 2380; break; case 'A2': $this->_pageWidth = 1190; $this->_pageHeight = 1684; break; case 'A3': $this->_pageWidth = 842; $this->_pageHeight = 1190; break; case 'A4': $this->_pageWidth = 595; $this->_pageHeight = 842; break; case 'A5': $this->_pageWidth = 421; $this->_pageHeight = 595; break; case 'A6': $this->_pageWidth = 297; $this->_pageHeight = 421; break; case 'B5': $this->_pageWidth = 501; $this->_pageHeight = 709; break; case 'LETTER': $this->_pageWidth = 612; $this->_pageHeight = 792; break; case 'LEGAL': $this->_pageWidth = 612; $this->_pageHeight = 1008; break; case 'LEDGER': $this->_pageWidth = 1224; $this->_pageHeight = 792; break; case '11X17': $this->_pageWidth = 792; $this->_pageHeight = 1224; break; case 'CD_FRONT': $this->_pageWidth = 337; $this->_pageHeight = 337; break; case 'INLAY': $this->_pageWidth = 425; $this->_pageHeight = 332; break; case 'INLAY_NOSIDES': $this->_pageWidth = 390; $this->_pageHeight = 332; break; } } if (isset($param['orientation']) && strtoupper($param['orientation']) == 'LANDSCAPE') { $w = $this->_pageWidth; $this->_pageWidth = $this->_pageHeight; $this->_pageHeight = $w; } parent::Image_Canvas($param); if (!$this->_pageWidth) { $this->_pageWidth = $this->_width; } elseif (!$this->_width) { $this->_width = $this->_pageWidth; } if (!$this->_pageHeight) { $this->_pageHeight = $this->_height; } elseif (!$this->_height) { $this->_height = $this->_pageHeight; } $this->_width = min($this->_width, $this->_pageWidth); $this->_height = min($this->_height, $this->_pageHeight); if (isset($param['align']) && ($this->_width != $this->_pageWidth || $this->_height != $this->_pageHeight)) { switch (strtoupper($param['align'])) { case 'TOPLEFT': $this->_top = 0; $this->_left = 0; break; case 'TOPCENTER': $this->_top = 0; $this->_left = ($this->_pageWidth - $this->_width) / 2; break; case 'TOPRIGHT': $this->_top = 0; $this->_left = $this->_pageWidth - $this->_width; break; case 'LEFTCENTER': $this->_top = ($this->_pageHeight - $this->_height) / 2; $this->_left = 0; break; case 'CENTER': $this->_top = ($this->_pageHeight - $this->_height) / 2; $this->_left = ($this->_pageWidth - $this->_width) / 2; break; case 'RIGHTCENTER': $this->_top = ($this->_pageHeight - $this->_height) / 2; $this->_left = $this->_pageWidth - $this->_width; break; case 'LEFTBOTTOM': $this->_top = $this->_pageHeight - $this->_height; $this->_left = 0; break; case 'CENTERBOTTOM': $this->_top = $this->_pageHeight - $this->_height; $this->_left = ($this->_pageWidth - $this->_width) / 2; break; case 'RIGHTBOTTOM': $this->_top = $this->_pageHeight - $this->_height; $this->_left = $this->_pageWidth - $this->_width; break; } } $this->_pdflib = $this->_version(); $addPage = true; if (isset($param['pdf']) && is_resource($param['pdf'])) { $this->_pdf =& $param['pdf']; if (isset($param['add_page']) && $param['add_page'] === false) { $addPage = false; } } else { $this->_pdf = pdf_new(); if (isset($param['filename'])) { pdf_open_file($this->_pdf, $param['filename']); } else { pdf_open_file($this->_pdf, ''); } pdf_set_parameter($this->_pdf, 'warning', 'true'); pdf_set_info($this->_pdf, 'Creator', isset($param['creator']) ? $param['creator'] : 'PEAR::Image_Canvas'); pdf_set_info($this->_pdf, 'Author', isset($param['author']) ? $param['author'] : 'Jesper Veggerby'); pdf_set_info($this->_pdf, 'Title', isset($param['title']) ? $param['title'] : 'Image_Canvas'); } if ($addPage) { pdf_begin_page($this->_pdf, $this->_pageWidth, $this->_pageHeight); } $this->_reset(); }
$texttime = $ltime['hours'] + 0 . " hour" . ($ltime['hours'] ? "s" : ""); if ($ltime['minutes']) { $texttime .= " and " . ($ltime['minutes'] + 0) . " minute" . ($ltime['minutes'] ? "s" : ""); } else { $texttime = "exactly {$texttime}"; } // A4 page: 595 x 842 points $radius = 177; $margin = 120; $ring = 40; $header = 20; $footer = 228; $file = tempnam("", "tests") . '.pdf'; $width = 2 * ($radius + $margin); $height = 2 * ($radius + $margin) + $header + $footer; $pdf = pdf_new(); if (!pdf_open_file($pdf, $file)) { echo "error"; exit; } pdf_set_parameter($pdf, "warning", "true"); pdf_set_info($pdf, "Creator", "Phalanger"); pdf_set_info($pdf, "Author", "Uwe Steinmann"); pdf_set_info($pdf, "Title", "Analog Clock"); pdf_begin_page($pdf, $width, $height); function center($s, $y, $size, $fontname = "Times-Roman", $outline = 0) { global $pdf, $font, $width; pdf_set_value($pdf, "textrendering", $outline); $font = pdf_findfont($pdf, $fontname, "iso8859-2"); pdf_setfont($pdf, $font, $size);
function _presentation(&$presentation) { global $pres; $_SESSION['selected_display_mode'] = get_class($this); // In PDF mode we loop through all the slides and make a single // big multi-page PDF document. $this->page_number = 0; $this->pdf = pdf_new(); if (!empty($pdfResourceFile)) { pdf_set_parameter($this->pdf, "resourcefile", $pdfResourceFile); } pdf_open_file($this->pdf, null); pdf_set_info($this->pdf, "Author", isset($presentation->speaker) ? $presentation->speaker : "Anonymous"); pdf_set_info($this->pdf, "Title", isset($presentation->title) ? $presentation->title : "No Title"); pdf_set_info($this->pdf, "Creator", "See Author"); pdf_set_info($this->pdf, "Subject", isset($presentation->topic) ? $presentation->topic : ""); while (list($this->slideNum, $slide) = each($presentation->slides)) { // testing hack $slideDir = dirname($this->presentationDir . '/' . $presentation->slides[$this->slideNum]->filename) . '/'; $fn = $this->presentationDir . '/' . $presentation->slides[$this->slideNum]->filename; $fh = fopen($fn, "rb"); $r =& new XML_Slide($fh); $r->setErrorHandling(PEAR_ERROR_DIE, "%s ({$fn})\n"); $r->parse(); $this->objs = $r->getObjects(); $this->my_new_pdf_page($this->pdf, $this->pdf_x, $this->pdf_y, true); $this->pdf_cx = $this->pdf_cy = 0; // Globals that keep our current x,y position while (list($this->coid, $obj) = each($this->objs)) { $obj->display(); } $this->my_new_pdf_end_page($this->pdf); } $this->my_new_pdf_page($this->pdf, $this->pdf_x, $this->pdf_y, true); pdf_set_font($this->pdf, $this->pdf_font, -20, 'winansi'); $fnt = pdf_findfont($this->pdf, $this->pdf_font, 'winansi', 0); $dx = pdf_stringwidth($this->pdf, "Index", $fnt, -20); $x = (int) ($this->pdf_x / 2 - $dx / 2); pdf_set_parameter($this->pdf, "underline", 'true'); pdf_show_xy($this->pdf, "Index", $x, 60); pdf_set_parameter($this->pdf, "underline", 'false'); $this->pdf_cy = pdf_get_value($this->pdf, "texty", null) + 30; $old_cy = $this->pdf_cy; pdf_set_font($this->pdf, $this->pdf_font, -12, 'winansi'); if (is_array($this->page_index)) { foreach ($this->page_index as $pn => $ti) { if ($ti == 'titlepage') { continue; } $ti .= ' '; while (pdf_stringwidth($this->pdf, $ti, $fnt, -12) < $this->pdf_x - $this->pdf_cx * 2.5 - 140) { $ti .= '.'; } pdf_show_xy($this->pdf, $ti, $this->pdf_cx * 2.5, $this->pdf_cy); $dx = pdf_stringwidth($this->pdf, $pn, $fnt, -12); pdf_show_xy($this->pdf, $pn, $this->pdf_x - 2.5 * $this->pdf_cx - $dx, $this->pdf_cy); $this->pdf_cy += 15; if ($this->pdf_cy > $this->pdf_y - 50) { $this->my_new_pdf_end_page($this->pdf); $this->my_new_pdf_page($this->pdf, $this->pdf_x, $this->pdf_y, false); $this->pdf_cy = $old_cy; pdf_set_font($this->pdf, $this->pdf_font, -12, 'winansi'); } } } $this->my_new_pdf_end_page($this->pdf); pdf_close($this->pdf); $data = pdf_get_buffer($this->pdf); header('Content-type: application/pdf'); header('Content-disposition: inline; filename=' . $_SESSION['currentPres'] . '.pdf'); header("Content-length: " . strlen($data)); echo $data; }
function fud_pdf($author, $title, $subject, $page_type = 'letter', $hmargin = 15, $wmargin = 15) { $this->pdf = pdf_new(); pdf_open_file($this->pdf, ''); pdf_set_info($this->pdf, 'Author', $author); pdf_set_info($this->pdf, 'Title', $title); pdf_set_info($this->pdf, 'Creator', $author); pdf_set_info($this->pdf, 'Subject', $subject); pdf_set_value($this->pdf, 'compress', 9); switch ($page_type) { case 'A0': $this->pw = 2380; $this->ph = 3368; break; case 'A1': $this->pw = 1684; $this->ph = 2380; break; case 'A2': $this->pw = 1190; $this->ph = 1684; break; case 'A3': $this->pw = 842; $this->ph = 1190; break; case 'A4': $this->pw = 595; $this->ph = 842; break; case 'A5': $this->pw = 421; $this->ph = 595; break; case 'A6': $this->pw = 297; $this->ph = 421; break; case 'B5': $this->pw = 501; $this->ph = 709; break; case 'letter': default: $this->pw = 612; $this->ph = 792; break; case 'legal': $this->pw = 612; $this->ph = 1008; break; case 'ledger': $this->pw = 1224; $this->ph = 792; break; } $this->hmargin = $hmargin; $this->wmargin = $wmargin; $fonts = array('Courier', 'Courier-Bold', 'Helvetica-Bold', 'Helvetica'); foreach ($fonts as $f) { $this->fonts[$f] = pdf_findfont($this->pdf, $f, 'host', false); } }