Zum Inhalt springen

Develop: pdf_generator2 mit realURL

Erstellt am 8. September 2006 · 12 Antworten · letzte Antwort am 12. Mai 2010

Tags: Frage

Spyker ·

Hallo,

ich finde ganz oft immer wieder die frage wie man pdf_geenrator2 mit RealURL statisch machen kann. Nun wollte ich hier man dem ganzen ein bischen auf den Grund gehen und hoffe das sich noch welche finden die mit vielleicht helfen. Stand der Dinge...

ich habe mir eben einmal die pdf_generator2 ein bischen angeschaut und gesehen das die Links gar nicht über die Typo3 Link Funktion erstellt werden.

Deshalb habe ich erst einmal diese Funktion erstellt:

   function makeRealUrlPdfLink($content, $conf) {

      # Parametrer aufbauen
      $parms = array();
      require('typo3conf/localconf.php');
      $parameters = unserialize($TYPO3_CONF_VARS['EXT']['extConf']['pdf_generator2']);
      $parms['id'] = $GLOBALS['TSFE']->id;
      $parms['type'] = $parameters['typeNum'];
      $parms = array_merge($parms, $GLOBALS['HTTP_GET_VARS']);
      if($conf['include_post_vars']) $parms = array_merge($parms, $GLOBALS['HTTP_POST_VARS']);
      if($conf['attachment']) $parms['attachment'] = rawurlencode($conf['attachment']);
      if($conf['filename']) $parms['filename'] = rawurlencode($conf['filename']);

      # link aufbauen
      require_once(PATH_tslib.'class.tslib_pibase.php');
      $link = tslib_pibase::pi_getPageLink($parms['id'],'',$parms);
      $GLOBALS['TT']->setTSLogMessage('link to URI: '.$link,0);

      # Link zurück geben
      // Alte methode
      //return $this->makePdfLink($content, $conf);
      // Neue methode
      return '<a href="'.$link.'"'.(($conf['target'])?' target="'.$conf['target'].'"':'').((!$conf['no_blur'] && !$conf['noBlur'])?' onFocus="blurLink(this);"':'').(($conf['ATagParams'])?' '.$conf['ATagParams'].'"':'').'>'.$content.'</a>';
   }

Diese Funktion gibt schon einmal den richtigen Link zurück, denn man dann mit realURL Konfigurieren kann.

RealURL habe ich dann unter fileName so ergänzt:

'download.pdf' => array(
'keyValues' => array (
'type' => 123,
),
),

mein PDF Link wird über das Template hinzugefügt wie in der Konfiguration:

110 = TEXT
110.value = printable version
110.postUserFunc = tx_pdfgenerator2->makeRealUrlPdfLink
# hier habe ich meine Funktion benutzt.
110.postUserFunc.target = _blank

Nun bekomme ich auf meiner seite home.html den PDF Link zu home/download.pdf. Das sieht ja eigentlich schon ganz gut aus. Nun habe ich aber das problem das dieser Lik von RealURL anscheint nicht richtig verarbeitet wird.

Kann das vielleicht jemand nachvollziehen?!?!?

Beste Grüße,
Tim

steffenk ·

Hi Tim,

da Du den Link "hart"-kodierst, findet doch keine Umwandlung von Realurl statt.

Die einfachste Methode wäre über Typolink, da man das komplette Array mit ATagParams etc übergeben kann. Dann sollte es auch mit Realurl funktionieren.

Ich habe das noch nicht probiert sondern berufe mich nur auf Dein Snippet.

Spyker ·

ich bin mir grade nicht mehr sicher.

Aber tslib_pibase::pi_getPageLink benutzt doch die Typo3Link methode.
Deswegen ist doch der Link nicht Hardgecoded !?!?! oder?

Beste,
Tim

steffenk ·

ja Du hast Recht.

Trotzdem erscheint mir das doppelt gemoppelt, warum dann nicht das $parm-Array erweitern und typolink aufrufen ?
$GLOBALS['TSFE']->cObj->typolink()

Dann scheint ja das einzige Problem die richtige Realurl-Konfiguration zu sein - ich probier das mal aus 😉

christe ·

Ich suche auch noch nach einer Lösung dieses PRoblems.
Ich bekomme zwar PDF's generiert, jedoch ohne Bilder und ohne CSS. Den Link erstelle ich mit

30.stdWrap.preUserFunc = tx_pdfgenerator2->makePdfLink

Die Ausgabe über ein Template:

# PDF ausgeben
pdf_generator = PAGE
pdf_generator {
        typeNum = 123
  	config {
    		additionalHeaders = Content-type: application/pdf
    	}
    	
        stylesheet = fileadmin/template/css/drucken.css

        50 = TEMPLATE
        50 {
        	# Template einbinden
		template = FILE
		template.file = fileadmin/template/template-drucken.html
        	
        	# Subpart Marker ansprechen
		workOnSubpart = DOKUMENT
	
        	subparts.INHALT = CONTENT
		subparts.INHALT {
			table = tt_content
			select.orderBy = sorting
			select.where = colPos = 0
			select.languageField = sys_language_uid
        	}
        }   
}

Das PDF wird mit korrektem realURL Pfad als "print.pdf" erzeugt.

Man kann die übrigens die entsprechende html-Ausgangs-Datei von der das PDF erstellt wird aufrufen unter:

/typo3temp/html2ps.html

Dort wird alles korrekt wie im Template mit CSS dargestellt. Im PDF geht es mit realURL nicht mehr. Ohne realURL (Extension deaktiviert) geht es!!

Es scheint, als hätte der PDF-Generator Probleme, die Bild und Datei-Pfade korrekt aufzulösen... Weiss jemand Rat?

Spyker ·

Da die letzte Antwort nicht wirklich zum Problem beigetragen hat, wollte ich noch einmal nachfragen ob Ihr vielleicht eine Lösung für dieses Problem habt.

Beste,
Tim

Contrixx-Webdesign ·

Der Thread ist zwar schon etwas älter, aber gibt es inzwischen dafür eine Lösung? Ich stehe nämlich vor genau demselben Problem.

Danke im vorraus.

Spyker ·

Nein, ich habe bisher keine Lösung. Habe mich aber auch nicht mehr weiter damit beschäftigt.

PS @ Contrixx-Webdesign: Ich empfehle dir/euch einen Blick in die Style Guides von TYPO3. Dann wisst Ihr nämlich das TYPO3 in Versalien geschrieben wird und nicht "Typo3".

lamina ·

Liebe Community, Lieber Spyke!

Ich hab hier eine Seite gefunden die das ganze versucht in den Griff zu bekommen http://www.tonni.net/tutorials/pdfgenerator2_mit_realurl.html , jedoch wird bei mir kein Link erzeugt, der zu einem PDF führt sondern immer nur zur Startseite. Schalte ich RealURL aus oder verwende keine statische Referenzierung bei pdfgenerator2 funktioniert alles wunderbar.

Hat jemand eine Idee mittlerweile wie man den Laden zum Laufen bringt. Auf typo3.fruit-lab.de gibt es anscheinend eine Variante mit Javascript.

Bitte um kurze Rückmeldung falls jemand eine Lösung hat um pdf_generator 2 mit realUrl zu verbinden. Verwende übrigens TYPO3 4.3.2. falls das wichtig zu wissen ist.

LG Lamina

xdtera ·

Interessanter Thread! Ich habe auch ein Problem mit dem pdf_generator2

Und zwar benutze ich Typo3 4.3.1 mit
-Templavoila 1.4.1
-RealURL 1.7.0
-tt_news 3.0.1
-comments 1.5.3

-pdf_generator2 0.5.2
-pdf_generator2_fonts 0.0.1
-tv_pdfgen 1.1.1

-> Umlaute und Sonderzeichen werden nicht korrekt angezeigt. Das PDF wird nicht komplett erzeugt, nur soweit bis ein Sonderzeichen auftaucht: Bsp: Blablalb blalalala blaa[è hier endet es dann]

-> Bilder werden nicht richtig angezeigt, es sind nur Krisselbilder zu sehen - nichts erkennbares.

-> Wenn ich eine tt_news Detailseite (single news mit Bild) auf englisch stelle, und dann da PDF generieren will, bekomm ich diese Meldung: PDFlibException - form fields not supported in PDFlib Lite
Wenn jedoch die Newsseite kein Bild hat, dann bekomm ich diese Meldung nicht.

hab RealURL mal deaktiviert, hat aber nichts gebracht. muss an was anderem hängen. Bitte um jegliche Hilfe!

pdf_generator = PAGE
pdf_generator {
  typeNum = 123
  # die CSS der Druckversion:
  stylesheet = fileadmin/templates/css/print2.css  
  50 >  
  50 = USER
  50.userFunc = tx_templavoila_pi1->main_page
  50.childTemplate=pdf
}  
## pdf generator [stop]


## PDF Link [start]
lib.backtopprint = COA
lib.backtopprint {
  wrap = <div class="create-link">|</div>
...

  40 = HTML
  40.value = <img src="fileadmin/templates/img/pdf.gif" width="12" height="12" border="0" name="PDF" alt=""/> 
  45 = COA
  45.10 = TEXT
  45.10 {
    value = PDF erstellen
    postUserFunc = tx_pdfgenerator2->makePdfLink
    postUserFunc.include_post_vars = 1
    postUserFunc.target = _blank
    
    10 = USER_INT
    10.userFunc = tx_pdfgenerator->getPdfTarget
    10.userFunc.include_post_vars = 1  
  }
...