241 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			241 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| session_start();
 | |
| 
 | |
| $CONVERT_CMD = "/usr/bin/pdftk";
 | |
| 
 | |
| require_once('TCPDF/tcpdf.php');
 | |
| 
 | |
| class kaformPDF extends TCPDF {
 | |
| 	 //Page header
 | |
| 	public function Header() {
 | |
| 	}
 | |
| 
 | |
| 	//            // Logo
 | |
| 	//                    $image_file = K_PATH_IMAGES.'logo_example.jpg';
 | |
| 	//                            $this->Image($image_file, 10, 10, 15, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
 | |
| 	//                                    // Set font
 | |
| 	//                                            $this->SetFont('helvetica', 'B', 20);
 | |
| 	//                                                    // Title
 | |
| 	//                                                            $this->Cell(0, 15, '<< TCPDF Example 003 >>', 0, false, 'C', 0, '', 0, false, 'M', 'M');
 | |
| 	//                                                                }
 | |
| 	//
 | |
| 	//                                                                    // Page footer
 | |
| 	public function Footer() {
 | |
| 	}
 | |
| 	//                                                                                // Position at 15 mm from bottom
 | |
| 	//                                                                                        $this->SetY(-15);
 | |
| 	//                                                                                                // Set font
 | |
| 	//                                                                                                        $this->SetFont('helvetica', 'I', 8);
 | |
| 	//                                                                                                                // Page number
 | |
| 	//                                                                                                                        $this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
 | |
| 	//                                                                                                                            }
 | |
| 	//                                                                                                                            }
 | |
| 	//                                                                                                                            
 | |
| };
 | |
| 
 | |
| function mkFrontPDF(){
 | |
| 	
 | |
| 	// create new PDF document
 | |
| 	$pdf = new kaformPDF(
 | |
| 		PDF_PAGE_ORIENTATION, PDF_UNIT, $pageLayout /*PDF_PAGE_FORMAT*/, 
 | |
| 		true, 'UTF-8', false);
 | |
| 
 | |
| 	// set document information
 | |
| /*	$pdf->SetCreator(PDF_CREATOR);
 | |
| 	$pdf->SetAuthor('Nicola Asuni');
 | |
| 	$pdf->SetTitle('TCPDF Example 001');
 | |
| 	$pdf->SetSubject('TCPDF Tutorial');
 | |
| 	$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
 | |
|  */
 | |
| 	// set default header data
 | |
| //	$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, 
 | |
| 	//	PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, 
 | |
| //		array(0,64,255), array(0,64,128));
 | |
| 
 | |
| //	$pdf->setFooterData(array(0,64,0), array(0,64,128));
 | |
| 
 | |
| 	// set header and footer fonts
 | |
| 	$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
 | |
| 	$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
 | |
| 
 | |
| 	// set default monospaced font
 | |
| 	$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
 | |
| 
 | |
| 	// set margins
 | |
| 	$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
 | |
| 	$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
 | |
| 	$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
 | |
| 
 | |
| 	// set auto page breaks
 | |
| 	$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
 | |
| 
 | |
| 	// set image scale factor
 | |
| 	$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
 | |
| 
 | |
| 	// set some language-dependent strings (optional)
 | |
| 	if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
 | |
| 		require_once(dirname(__FILE__).'/lang/eng.php');
 | |
| 		$pdf->setLanguageArray($l);
 | |
| 	}
 | |
| 
 | |
| 	// ---------------------------------------------------------
 | |
| 
 | |
| 	// set default font subsetting mode
 | |
| 	$pdf->setFontSubsetting(true);
 | |
| 
 | |
| 	// Set font
 | |
| 	// dejavusans is a UTF-8 Unicode font, if you only need to
 | |
| 	// print standard ASCII chars, you can use core fonts like
 | |
| 	// helvetica or times to reduce file size.
 | |
| 	$pdf->SetFont('dejavusans', '', 14, '', true);
 | |
| 
 | |
| 	// Add a page
 | |
| 	// This method has several options, check the source code 
 | |
| 	// documentation for more information.
 | |
| 	$pdf->AddPage('P');
 | |
| 
 | |
| 	// set text shadow effect
 | |
| 	$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 
 | |
| 		'depth_h'=>0.2, 'color'=>array(196,196,196), 
 | |
| 		'opacity'=>1, 'blend_mode'=>'Normal'));
 | |
| 
 | |
| 	// calculate the overall summary
 | |
| 	$sum = calcSum();
 | |
| 
 | |
| 	// Set some content to print
 | |
| 	$html = 
 | |
| <<<EOD
 | |
| 	<h1>Kostenerstattungsantrag über $sum EUR</h1>
 | |
| 	<p><b>Projekt: $_POST[project]</b></p>
 | |
| 	<p>WMDE Ansprechpartner: $_POST[wmdecontact]</p>
 | |
| 	<hr>
 | |
| 	<p>
 | |
| 	 
 | |
| 	<br>
 | |
| 	Name: $_POST[realname]<br>
 | |
| 	E-Mail: $_POST[email]<br>
 | |
| 	Telefon: $_POST[phone]
 | |
| 	</p>
 | |
| 	<hr>
 | |
| EOD;
 | |
| 
 | |
| 	// Print text using writeHTMLCell()
 | |
| 	$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
 | |
| 
 | |
| 	// ---------------------------------------------------------
 | |
| 	$tn = tempnam("/tmp","kaform");
 | |
| 
 | |
| 	// Close and output PDF document
 | |
| 	// This method has several options, check the source code 
 | |
| 	// documentation for more information.
 | |
| 	$pdf->Output($tn, 'F');
 | |
| 	return $tn;
 | |
| 
 | |
| }
 | |
| 
 | |
| function mkSnippedPdf($key){
 | |
| 	$pageLayout = array(210,70);
 | |
| 	
 | |
| 	// create new PDF document
 | |
| #	$pdf = new kaformPDF(
 | |
| #		PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, 
 | |
| #		true, 'UTF-8', false);
 | |
| 
 | |
| 	$pdf = new kaformPDF(
 | |
| 		PDF_PAGE_ORIENTATION, PDF_UNIT, $pageLayout /*PDF_PAGE_FORMAT*/, 
 | |
| 		true, 'UTF-8', false);
 | |
| 
 | |
| 
 | |
| 
 | |
| 	$pdf->AddPage('L');
 | |
| 
 | |
| 	$pos = array_search($key,array_keys($_POST['desc']))+1;
 | |
| 
 | |
| 
 | |
| 
 | |
| 	echo "<br>Make Snipped for $key -> $pos<br>";
 | |
| 
 | |
| 	#	$mydesk = $_POST[desc][$key];
 | |
| 	#
 | |
| 	$amount = $_POST['amount'][$key];
 | |
| 	$desc = $_POST['desc'][$key];
 | |
| 
 | |
| 	$html = 
 | |
| <<<EOD
 | |
| 	
 | |
| 	<h1>Posi. $pos</h1>
 | |
| 	<p>$desc</p><br>
 | |
| 	<p>$amount EUR</p><br>
 | |
| EOD;
 | |
| 	
 | |
| 	// Print text using writeHTMLCell()
 | |
| 	$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
 | |
| 
 | |
| 	$tn = tempnam("/tmp","kaform");
 | |
| 
 | |
| 	// Close and output PDF document
 | |
| 	// This method has several options, check the source code 
 | |
| 	// documentation for more information.
 | |
| 	$pdf->Output("$tn", 'F');
 | |
| 	return $tn;
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| //var_dump($_POST);
 | |
| function convert($row) {
 | |
| 	$r = array();
 | |
| 	foreach ($_SESSION['files'] as $filename => $file){
 | |
| 		if ($file['row'] != $row)
 | |
| 			continue;
 | |
| 
 | |
| 		$tn = tempnam("/tmp","kaform");
 | |
| 		file_put_contents("$tn",$file['content']);
 | |
| 		array_push($r,"$tn");
 | |
| 	}
 | |
| 	return $r;
 | |
| }
 | |
| 
 | |
| 
 | |
| function calcSum(){
 | |
| 	$sum =0;
 | |
| 	foreach ($_POST['amount'] as $val){
 | |
| 		var_dump($val);
 | |
| 		$sum += floatval(str_replace(",",".",$val));
 | |
| 	}
 | |
| 	return $sum;
 | |
| }
 | |
| 
 | |
| 
 | |
| $pdfs = array();
 | |
| 
 | |
| // Applicatoin starts here
 | |
| 
 | |
| $p = mkFrontPDF();
 | |
| array_push($pdfs,$p);
 | |
| 
 | |
| foreach ($_POST['desc'] as $key => $val) {
 | |
| 	echo "DREESK KEY VAL $key --> $val<br>";
 | |
| 	$p = mkSnippedPDF($key);
 | |
| 	array_push($pdfs,$p);
 | |
| 
 | |
| 	$pr = convert($key);
 | |
| 	$pdfs = array_merge($pdfs,$pr);
 | |
| 
 | |
| }
 | |
| 
 | |
| var_dump($pdfs);
 | |
| 
 | |
| 
 | |
| $cmd = "$CONVERT_CMD";
 | |
| foreach ($pdfs as $filename){
 | |
| 	$cmd .= " $filename";
 | |
| }
 | |
| $cmd .= " cat output /tmp/result.pdf";
 | |
| exec ($cmd);
 | |
| 
 | |
| 
 | |
| echo "CMD: $cmd<br>";
 | |
| 
 | |
| 
 |