Beispiel #1
0
 public function output($file = null)
 {
     ob_clean();
     $this->pdf = new PDFDocument($this->orientation, $this->paper);
     $this->pdfPreCustomize();
     $this->pdf->showPageNumbers = $this->showPageNumbers;
     $this->pdf->showFooter = $this->showFooter;
     foreach ($this->contents as $key => $content) {
         if ($content == null) {
             continue;
         }
         if (is_string($content)) {
             switch ($content) {
                 case "NEW_PAGE":
                     $this->pdf->AddPage();
                     break;
                 case "RESET_PAGE_NUMBERS":
                     $this->pdf->resetPageNumbers();
                     break;
             }
             continue;
         }
         switch ($content->getType()) {
             case "text":
                 if (isset($content->style["color"])) {
                     $this->pdf->SetTextColor($content->style["color"][0], $content->style["color"][1], $content->style["color"][2]);
                 } else {
                     $this->pdf->SetTextColor(0, 0, 0);
                 }
                 $this->pdf->SetFont($content->style["font"], ($content->style["bold"] ? "B" : "") . ($content->style["underline"] ? "U" : "") . ($content->style["italics"] ? "I" : ""), $content->style["size"]);
                 if (isset($content->style["top_margin"])) {
                     $this->pdf->Ln($content->style["top_margin"]);
                 }
                 if ($content->style["flow"]) {
                     $this->pdf->WriteHTML($content->style['line_height'] == '' ? $content->style["size"] * 0.353 + 1 : $content->style['line_height'], $content->getText());
                     $this->pdf->Ln();
                 } else {
                     $this->pdf->SetFillColor(180, 200, 180);
                     $this->pdf->Cell(0, isset($content->style["height"]) ? $content->style["height"] : $content->style["size"] * 0.353 + 1, $content->getText(), 0, 0, $content->style["align"], $content->style["fill"]);
                     $this->pdf->Ln();
                 }
                 if (isset($content->style["bottom_margin"])) {
                     $this->pdf->Ln($content->style["bottom_margin"]);
                 }
                 break;
             case "attributes":
                 $this->pdf->attributeBox($content->data, $content->style);
                 break;
             case "table":
                 if ($content->style["totalsBox"] == true) {
                     $this->pdf->totalsBox($content->getData(), $content->data_params);
                 } else {
                     if ($content->style["autoTotalsBox"]) {
                         $this->pdf->table($content->getHeaders(), $content->getData(), $content->style, $content->data_params);
                         $totals = $content->getTotals();
                         $totals[0] = "Totals";
                         $this->pdf->totalsBox($totals, $content->data_params);
                     } else {
                         $this->pdf->table($content->getHeaders(), $content->getData(), $content->style, $content->data_params);
                         $this->contents[$key] = $content;
                     }
                 }
                 break;
             case "image":
                 $this->pdf->image($content->image, null, null, $content->width, $content->height);
                 break;
             case "logo":
                 $this->pdf->image($content->image, null, null, 8, 8);
                 //print $this->pdf->getY();
                 $this->pdf->sety($this->pdf->getY() - 8);
                 $this->pdf->SetFont("Times", "B", "18");
                 $this->pdf->cell(9);
                 $this->pdf->cell(0, 8, $content->title);
                 $this->pdf->SetFont("Arial", null, 7);
                 //print $this->pdf->getY();
                 //$this->pdf->sety(10);
                 foreach ($content->address as $address) {
                     $this->pdf->setx(($this->pdf->GetStringWidth($address) + 10) * -1);
                     $this->pdf->cell(0, 3, $address);
                     $this->pdf->Ln();
                 }
                 $this->pdf->Ln(5);
         }
     }
     $this->pdfPostCustomize();
     if ($file == null) {
         $this->pdf->Output();
         die;
     } else {
         $this->pdf->Output($file);
     }
 }