예제 #1
0
파일: PDFLib.php 프로젝트: onyxnz/quartzpos
 /**
  * Class constructor
  *
  * @param mixed $paper The size of paper to use either a string (see {@link Dompdf\Adapter\CPDF::$PAPER_SIZES}) or
  *                            an array(xmin,ymin,xmax,ymax)
  * @param string $orientation The orientation of the document (either 'landscape' or 'portrait')
  * @param Dompdf $dompdf
  */
 function __construct($paper = "letter", $orientation = "portrait", Dompdf $dompdf)
 {
     if (is_array($paper)) {
         $size = $paper;
     } else {
         if (isset(self::$PAPER_SIZES[mb_strtolower($paper)])) {
             $size = self::$PAPER_SIZES[mb_strtolower($paper)];
         } else {
             $size = self::$PAPER_SIZES["letter"];
         }
     }
     if (mb_strtolower($orientation) === "landscape") {
         list($size[2], $size[3]) = array($size[3], $size[2]);
     }
     $this->_width = $size[2] - $size[0];
     $this->_height = $size[3] - $size[1];
     $this->_dompdf = $dompdf;
     $this->_pdf = new \PDFLib();
     $license = $dompdf->get_option('pdflibLicense');
     if (strlen($license) > 0) {
         $this->_pdf->set_parameter("license", $license);
     }
     $this->_pdf->set_parameter("textformat", "utf8");
     $this->_pdf->set_parameter("fontwarning", "false");
     $this->_pdf->set_info("Creator", "DOMPDF");
     // Silence pedantic warnings about missing TZ settings
     $tz = @date_default_timezone_get();
     date_default_timezone_set("UTC");
     $this->_pdf->set_info("Date", date("Y-m-d"));
     date_default_timezone_set($tz);
     if (self::$IN_MEMORY) {
         $this->_pdf->begin_document("", "");
     } else {
         $tmp_dir = $this->_dompdf->get_options("temp_dir");
         $tmp_name = tempnam($tmp_dir, "libdompdf_pdf_");
         @unlink($tmp_name);
         $this->_file = "{$tmp_name}.pdf";
         $this->_pdf->begin_document($this->_file, "");
     }
     $this->_pdf->begin_page_ext($this->_width, $this->_height, "");
     $this->_page_number = $this->_page_count = 1;
     $this->_page_text = array();
     $this->_imgs = array();
     $this->_fonts = array();
     $this->_objs = array();
     // Set up font paths
     $families = $dompdf->getFontMetrics->getFontFamilies();
     foreach ($families as $files) {
         foreach ($files as $file) {
             $face = basename($file);
             $afm = null;
             // Prefer ttfs to afms
             if (file_exists("{$file}.ttf")) {
                 $outline = "{$file}.ttf";
             } else {
                 if (file_exists("{$file}.TTF")) {
                     $outline = "{$file}.TTF";
                 } else {
                     if (file_exists("{$file}.pfb")) {
                         $outline = "{$file}.pfb";
                         if (file_exists("{$file}.afm")) {
                             $afm = "{$file}.afm";
                         }
                     } else {
                         if (file_exists("{$file}.PFB")) {
                             $outline = "{$file}.PFB";
                             if (file_exists("{$file}.AFM")) {
                                 $afm = "{$file}.AFM";
                             }
                         } else {
                             continue;
                         }
                     }
                 }
             }
             $this->_pdf->set_parameter("FontOutline", "\\{{$face}\\}=\\{{$outline}\\}");
             if (!is_null($afm)) {
                 $this->_pdf->set_parameter("FontAFM", "\\{{$face}\\}=\\{{$afm}\\}");
             }
         }
     }
 }