PDF gen working better. Need to fix up product description Cell height better
This commit is contained in:
parent
40f30519ab
commit
5c75f512d7
157
vendors/xtcpdf.php
vendored
157
vendors/xtcpdf.php
vendored
|
|
@ -164,7 +164,7 @@ class XTCPDF extends TCPDF {
|
|||
|
||||
$this->SetFontSize(10);
|
||||
|
||||
$lineHeight = 5; //Size of a single line of text. If the company name is more, multiply this by the number of lines it needs
|
||||
$lineHeight = 5.8; //Size of a single line of text. If the company name is more, multiply this by the number of lines it needs
|
||||
|
||||
|
||||
|
||||
|
|
@ -180,44 +180,133 @@ class XTCPDF extends TCPDF {
|
|||
//echo "HEADER ROW HEIGHT IS $heightNeeded";
|
||||
|
||||
/* Need to work out how many Pages the Product Table will need to be split over */
|
||||
|
||||
echo "Product Page height is: ".$this->getPageHeight();
|
||||
|
||||
echo "Product Page height is: ".$this->getPageHeight();
|
||||
|
||||
|
||||
$availableHeight = 253; //Figured out experimentally. Approx 253mm of space left for the actual table data after the header rows.
|
||||
|
||||
echo "Remaining space on the page is: $availableHeight <br>";
|
||||
|
||||
//Draw Header Rows
|
||||
$pageNo = $this->PageNoFormatted();
|
||||
$this->MultiCell(0, 0, "PRICING & SPECIFICATIONS (PAGE $pageNo OF {nb})", 0, "C", 0, 1);
|
||||
$pagesRequired = 1;
|
||||
|
||||
$this->MultiCell($itemColwidth, 0, "ITEM\nNO.", 1, "C", 1, 0);
|
||||
|
||||
$heightNeeded = $this->getLastH();
|
||||
/**
|
||||
* @todo this seems like a cleaner way of doing it than I did in the detailsBox(). Revise at some point
|
||||
*/
|
||||
|
||||
|
||||
$this->MultiCell($qtyColwidth, $heightNeeded, "QTY", 1, "C", 1, 0);
|
||||
$this->MultiCell($descColwidth, $heightNeeded, "DESCRIPTION", 1, "C", 1, 0);
|
||||
$this->MultiCell($unitpriceColwidth, $heightNeeded, "UNIT\nPRICE", 1, "C", 1, 0);
|
||||
$this->MultiCell($totalPricColwidth, $heightNeeded, "TOTAL\nPRICE", 1, "C", 1, 1);
|
||||
|
||||
//Header Line 2
|
||||
|
||||
$this->MultiCell($itemColwidth, 0, "", 1, "C", 1, 0);
|
||||
|
||||
$heightNeeded = $this->getLastH();
|
||||
$this->MultiCell($qtyColwidth, $heightNeeded, "", 1, "C", 1, 0);
|
||||
$this->MultiCell($descColwidth, $heightNeeded, $principleName, 1, "C", 1, 0);
|
||||
$this->MultiCell($unitpriceColwidth, $heightNeeded, $currency, 1, "C", 1, 0);
|
||||
$this->MultiCell($totalPricColwidth, $heightNeeded, $currency, 1, "C", 1, 1);
|
||||
|
||||
|
||||
$theseProductsHeight = 0;
|
||||
|
||||
$remainingHeight = $availableHeight;
|
||||
|
||||
$pageProducts = array(); //Array in the form $pageProducts[$pageNumber] = NUMBER_OF_ITEMS_ON_THIS_PAGE
|
||||
//Can see already the final summary total thing is going to be a bit of a bitch to do.
|
||||
|
||||
foreach ($products as $product) {
|
||||
|
||||
|
||||
$fullDesc = "<b>".$product[$docType]['title'].'</b><br>'.$product[$docType]['description'];
|
||||
$linesNeeded = $this->getNumLines($fullDesc, $descColwidth);
|
||||
$mmNeeded = $linesNeeded*$lineHeight;
|
||||
|
||||
if($remainingHeight - $mmNeeded <= 0) {
|
||||
$pagesRequired++;
|
||||
$remainingHeight = $availableHeight; //Start checking the next page;
|
||||
|
||||
$remainingHeight -= $mmNeeded;
|
||||
|
||||
$pageProducts[$pagesRequired][] = $product;
|
||||
|
||||
}
|
||||
else {
|
||||
$remainingHeight -= $mmNeeded;
|
||||
$pageProducts[$pagesRequired][] = $product;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
print_r($pageProducts[1]);
|
||||
|
||||
echo "We need to make $pagesRequired product pages<br>";
|
||||
|
||||
for($i=1; $i<=$pagesRequired; $i++) {
|
||||
$this->AddPage();
|
||||
|
||||
|
||||
|
||||
//Draw Header Rows
|
||||
$pageNo = $this->PageNoFormatted();
|
||||
$this->MultiCell(0, 0, "PRICING & SPECIFICATIONS (PAGE $pageNo OF {nb})", 0, "C", 0, 1);
|
||||
|
||||
$this->MultiCell($itemColwidth, 0, "ITEM\nNO.", 1, "C", 1, 0);
|
||||
|
||||
$heightNeeded = $this->getLastH();
|
||||
/**
|
||||
* @todo this seems like a cleaner way of doing it than I did in the detailsBox(). Revise at some point
|
||||
*/
|
||||
|
||||
|
||||
$this->MultiCell($qtyColwidth, $heightNeeded, "QTY", 1, "C", 1, 0);
|
||||
$this->MultiCell($descColwidth, $heightNeeded, "DESCRIPTION", 1, "C", 1, 0);
|
||||
$this->MultiCell($unitpriceColwidth, $heightNeeded, "UNIT\nPRICE", 1, "C", 1, 0);
|
||||
$this->MultiCell($totalPricColwidth, $heightNeeded, "TOTAL\nPRICE", 1, "C", 1, 1);
|
||||
|
||||
//Header Line 2
|
||||
|
||||
$this->MultiCell($itemColwidth, 0, "", 1, "C", 1, 0);
|
||||
|
||||
$heightNeeded = $this->getLastH();
|
||||
$this->MultiCell($qtyColwidth, $heightNeeded, "", 1, "C", 1, 0);
|
||||
$this->MultiCell($descColwidth, $heightNeeded, $principleName, 1, "C", 1, 0);
|
||||
$this->MultiCell($unitpriceColwidth, $heightNeeded, $currency, 1, "C", 1, 0);
|
||||
$this->MultiCell($totalPricColwidth, $heightNeeded, $currency, 1, "C", 1, 1);
|
||||
|
||||
|
||||
echo "POOOO";
|
||||
|
||||
|
||||
|
||||
|
||||
//Start Printing Product cells, until we run out of room. Then continue on the next page
|
||||
|
||||
foreach($pageProducts[$i] as $product) {
|
||||
$fullDesc = "<b>".$product[$docType]['title'].'</b><br>'.$product[$docType]['description'];
|
||||
|
||||
$linesNeeded = $this->getNumLines($fullDesc, $descColwidth);
|
||||
// echo "<br>";
|
||||
//echo $product[$docType]['title']." needs $linesNeeded so approx ".$linesNeeded*$lineHeight." mm <br>";
|
||||
|
||||
|
||||
$mmNeeded = $linesNeeded*$lineHeight;
|
||||
|
||||
$this->MultiCell($itemColwidth, $mmNeeded, number_format($product[$docType]['item_number'], 1, '.', ''), 1, "C", 0, 0);
|
||||
$this->MultiCell($qtyColwidth, $mmNeeded, $product[$docType]['quantity'], 1, "C", 0, 0);
|
||||
|
||||
$this->MultiCell($descColwidth, $mmNeeded, $fullDesc, 1, "L", 0, 0, null, null, true, 0, true);
|
||||
|
||||
$this->MultiCell($unitpriceColwidth, $mmNeeded, "$1000", 1, "C", 0, 0);
|
||||
$this->MultiCell($totalPricColwidth, $mmNeeded, "$2000", 1, "C", 0, 1);
|
||||
|
||||
}
|
||||
|
||||
|
||||
$this->AliasNbPages();
|
||||
$this->lastPage();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
// echo "Y is currently ".$this->GetY();
|
||||
|
||||
// $availableHeight = $this->getPageHeight() - $this->GetY() - 10;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* foreach ($products as $product) {
|
||||
//Need to use the getNumLines method to figure out how big to make the cells before the description cell
|
||||
$fullDesc = "<b>".$product[$docType]['title'].'</b><br>'.$product[$docType]['description'];
|
||||
|
||||
|
|
@ -231,9 +320,6 @@ class XTCPDF extends TCPDF {
|
|||
$this->MultiCell($itemColwidth, $mmNeeded, number_format($product[$docType]['item_number'], 1, '.', ''), 1, "C", 0, 0);
|
||||
$this->MultiCell($qtyColwidth, $mmNeeded, $product[$docType]['quantity'], 1, "C", 0, 0);
|
||||
|
||||
|
||||
|
||||
|
||||
$this->MultiCell($descColwidth, $mmNeeded, $fullDesc, 1, "L", 0, 0, null, null, true, 0, true);
|
||||
|
||||
$this->MultiCell($unitpriceColwidth, $mmNeeded, "$1000", 1, "C", 0, 0);
|
||||
|
|
@ -243,12 +329,17 @@ class XTCPDF extends TCPDF {
|
|||
|
||||
|
||||
}
|
||||
* */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// function productPageHTML() {
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -85,9 +85,9 @@ foreach ($quote['QuotePage'] as $page) {
|
|||
|
||||
}
|
||||
|
||||
$tcpdf->AddPage();
|
||||
|
||||
print_r($products);
|
||||
|
||||
//print_r($products);
|
||||
|
||||
$principle_name = strtoupper($enquiry['Principle']['name']);
|
||||
|
||||
|
|
@ -95,8 +95,7 @@ $tcpdf->productPage($principle_name, $quote['Currency']['iso4217'], $products, '
|
|||
|
||||
|
||||
|
||||
$tcpdf->AliasNbPages();
|
||||
$tcpdf->lastPage();
|
||||
|
||||
|
||||
|
||||
$output_dir = '/Users/karlcordes/Sites/quotenik/app/webroot/pdf/';
|
||||
|
|
|
|||
Loading…
Reference in a new issue