Zum Inhalt springen

FPDF im Frontend

Erstellt am 11. September 2007 · 7 Antworten · letzte Antwort am 12. September 2007

Tags: PHP, PDF, Frage

parklin ·

Hallo ist mein aller erster Post,

kann mir jemand sagen wie ich mit der FPDF Library Extension von David Bruehlmeier, PDFs on fly in meinem Frontend Extension erstellen kann??? Optimal wärs wenn ich direkt die PHP-Funktionen des Librarys aus der main Methode der pi-Klasse erstellen könnte.

MfG parklin

steffenk ·

die Extension ist nur die Lib, man muss also eine Instanz der Klasse erstellen und den Rest zu Fuss wie bei normaler fpdf-Erzeugung machen.

parklin ·

dankeschön für die schnelle Antwort.

An sich ist das bedienen des Libraries das kleinste Problem man schreibe einfach den unteren PHP Code in die Main Methode des Frontendplugins

if (t3lib_extMgm::isLoaded('fpdf')){
	require(t3lib_extMgm::extPath('fpdf').'class.tx_fpdf.php');
}
if (!t3lib_extMgm::isLoaded('fpdf')) return;
		// Get a new instance of the FPDF library
		if(isset($pdf)){
			$pdf=NULL;
		}
               
		$pdf = new PDF();
		$pdf->AddPage();
		$pdf->SetFont('Arial','B',16);
                if(isset($this->piVars['datensatz'])){
		       $pdf->Cell(40,10,$this->piVars['datensatz']));
                } else { 
                       $pdf->Cell(40,10,'No value');
                }
		$pdf->Output();

Nur Typo hängt die ganze Seite in HTML hinterher an, sodass das PDF damaged ist.
Kann man es in TypoScript bewerkstelligen, dass zum beispiel bei "&type=20"
in der Adressleiste, nichts ausgegeben wird, also kein Header und kein Footer ???

Ein dank geht schon mal voraus.

MfG parklin

parklin ·

Danke euch beiden und danke steffenk, dass Sie mich darauf aufmerksam gemacht haben.

Also ich habe jetzt einiges mit TS erledigen, PDF output funktioniert, aber nur mit Adobe Reader 8.0 oder höher. Mit Ts konnte ich einges ausschalten:

pdf = PAGE
pdf {
   typeNum = 20
   config.disableCharsetHeader = 1
   config.disableAllHeaderCode = 1
   config.no_cache = 1
   config.admPanel = 0
   config.sys_language_uid = 0
   10 = CONTENT
   10.table = tt_content
   10.select.OrderBy = sorting
   10.select.colPos = 0
   10.select.languageField = sys_language_uid 
}

Jedoch sind noch einige Elemente in meinem PDF, die immer noch stören um einen einwandfreien Output zu bekommen:

Hier das Ende des PDFs:

%%EOF

	<!--  CONTENT ELEMENT, uid:40/list [begin] -->
		
		<!--  Plugin inserted: [begin] -->
			
		<!--  Plugin inserted: [end] -->
			
	<!--  CONTENT ELEMENT, uid:40/list [end] -->

man beachte dass nach %%EOF eigentlich nichts kommen soll.

kann man den Rest auch über TS ausschalten, wenn ja, dann wie???

steffenk ·

aber klar, ich mach das so:

pdf = PAGE
pdf {
  typeNum = 20

  10 < plugin.tx_ext_pi1
  10.code >
  10.code = generatePDF
  

  config {
    disableAllHeaderCode = 1
    xhtml_cleaning = 0
    admPanel = 0
  }
}

In der Extension fragst Du das ab:

if($this->conf['code']=='generatePDF') {
  echo $this->generatePDF();
  exit;
}
parklin ·

sehr schön, es hat mir weiter geholfen, und es klappt wunderbar.

Dies war mein erster Topic und ich bin positiv überrascht, wie schnell die Antworten kommen. Ein großes Lob an die Moderatoren und dem Rest der Community.