示例#1
0
 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;
 }
示例#4
0
 /**
  * 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();
 }
示例#5
0
$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);
示例#6
0
 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;
 }
示例#7
0
 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);
     }
 }