Hilfe - Suche - Mitglieder - Kalender
Vollansicht: Problem mit PDF-Ausgabe
Forum Sefrengo.org > Allgemeine Foren > Anwenderforum
lonestar
Hi

Ich sitze immer noch an einem Modul zu PDF-Ausgabe. Leider ist von einem Modul noch nichts zu sehen da bis jetzt fast alles hardgecodet ist. Mein Problem ist das er normale Seiten in PDFs ausgibt. Sobald aber einige Seiten gesperrt und nur über Login erreichbar sind, bleibt das PDF weiß. sad.gif

Leider sind meine PHP-Kentnisse recht spartanisch. Ich schätze mal das ich an das PDF-Script irgendwie noch die Session-ID oder Cockie übergeben muß.

Als Vorlage für das PDF-Modul habe ich das Druckausgabemodul verwendet. Vielleicht kann mir jemand weiterhelfen.

Danke schonmal im Voraus.

Gruß

Lonestar
lonestar
Ich schiebs mal hoch. Hier sind doch ein Haufen schlauer Köpfe, die mir sicher weiter helfen können.


Gruß

Lonestar
MaZderMind
Ich würde fast behauptn, dass keine weiß wie du PDFs erzeugst und u ja auchkeine snippelts zeigst und dir deswegen auch keiner sagen kann was da nich dran stimmt.

Gruß, Peter
gunwalt
ZITAT(MaZderMind @ Mon. 28. August 2006, 16:49) *
Ich würde fast behauptn, dass keine weiß wie du PDFs erzeugst und u ja auchkeine snippelts zeigst und dir deswegen auch keiner sagen kann was da nich dran stimmt.


Ist die theoretische PDF-Ausgabe nicht auch deutschsprachenlesenundverstehenabhängig? tongue.gif biggrin.gif
MaZderMind
Sry man sollte nich gleichzeitig telen und schreiben *rausred*. Ich gelobe Besserung O:-)

Hmm naja ich weiß nich, rufst du vllt einen iframe oder sowas auf? schau mal in dern Quelltext ob da irgendwo ne Sesion-ID fehlet oder wenn nixmehr hilft schick mir mal das Modul.

Gruß, Peter
lonestar
@MaZderMind

Ok. Hätte mich vielleicht etwas verständlicher ausdrücken können. Modul schicken kann ich leider nicht, da kein Modul existiert. Wie gesagt ist alles hardgecodet. Ich hät gern ein Modul drumherum gebaut, aber irgendwie komm ich mit der Materie nicht klar. Ansonsten bin ich ja mit Sefrengo zufrieden. Nur die PDF-Ausgabe fehlt halt noch.

Ich habs ansatzweise erstmal mit fpdf bzw. mit html2fpdf versucht. Da ich nicht weiß wie man in Sefrengo die URL auf der man sich gerade befindet mittels Modul generiert (als Link) hab ich erstmal das Druckausgabe-Modul als Basis verwendet. Dazu hab ich ein kleines Script geschrieben das die komplette Seite zerlegt, und nur den gewünschten Contentbereich übrigläßt.

QUELLTEXT
ob_start();
include "$url";
$myurl_results=ob_get_contents();
ob_end_clean();
$inhalt= $myurl_results;


Da über das Druckmodul die URL als Variable übergeben wird funktioniert das ganze schon ganz gut.
Danach erzeugt das Script aus dem gewünschten Contentbereich (bzw. der gewünschte Container) und der CSS-Datei eine neue HTML-Datei. Die CSS-Stile fügt er in die HTML-Datei ein weil fpdf anscheinend mit externen CSS-Dateien nicht klar kommt. Diese erzeugte HTML-Datei wird dann mit html2fpdf in ein PDF umgewandelt und ausgegeben.

Aber wie du schon geschrieben hast, muß ich wahrscheinlich die Session-ID übergeben. Nur hab ich keine Idee wie. Wie schon gesagt, sind meine PHP-Kenntnisse sehr bescheiden.


Gruß


Lonestar
MaZderMind
Hi
Jage mal deine URL durch $sess->urlRaw, also so:
QUELLTEXT
$url = 'http://domain.tld/meine/sefrengo/seite.html';
$url = $sess -> urlRaw($url);
echo $url;


Gruß, Peter
lonestar
Sorry Peter. Hilft mir auch nicht weiter. Funktioniert trotzdem nicht.


Gruß

Lonestar
lonestar
Ich noch mal.

Vielleicht bin ich ja der einzige, der eine halbwegs vernünftige Lösung zu PDF-Ausgabe wünscht. Ich hab jetzt noch eine Weile rumprobiert. Solange die Seite nicht geschützt ist funktionierts, ist Sie aber nur noch über den Login erreichbar, gehts nicht mehr.

Vielleicht hat ja jemand noch einen Tip für mich.

Danke

Gruß

Lonestar
MaZderMind
Ja ich weiß nich so ganz wo das Problem is.. du sagst deine URL hat keine SID, also hab ich dir Code gepostet, wie du die SID an die URL dranbekommst. Code kannst du anscheinend auch keinen Posten also bleibt mir nur zu raten...

Gruß, Peter
lonestar
Sorry Peter.

Hab halt sowenig Ahnung, das ich nicht mal weiß was relevant ist und was nicht. Also wenn ich den von dir geposteten Code direkt in die Frontend-Ausgabe kopiere, hängt er an die URL die Session-ID ran. Sobald ich eingeloggt bin im Frontend hängt er Sie nicht mehr ran.

QUELLTEXT
<CMSPHP>
$pdfurl =$con_side[$idcatside]['link'];
$pdfurl = $sess -> urlRaw($pdfurl);
echo '<a href=pdf.php?pdfurl=http://bonolens.eworx-media.de/projekt01/';
echo $pdfurl;
echo ' target="_blank">PDF-Version</a>';
</CMSPHP>


So sieht momentan die Minimalversion der Frontendausgabe aus.

Wie das script den Content abgreifft hab ich ja schon weiter oben gepostet. (Nicht von den Variablen-Namen täuschen lassen, die hatte ich inzwischen geändert.)

In der Dedi-Help haabe ich folgendes gefunden.

ZITAT
Wie verlinke ich auf eine Seite, mit der idcatside X ohne, dass die Session verloren geht?

Der Link sollte in HTML wie folgt aussehen:

<a href="<DEDIPHP>echo $con_side[x]['link'];</DEDIPHP>"> <DEDIPHP>echo $con_side[x]['name'];</DEDIPHP></a>


Hat das vielleicht damit zu tun. Wie muß dann in Sefrengo mein Link aussehen.

Danke schonmal

Gruß

Lonestar
MaZderMind
Hi
Normalerweile sollte es wie im ersten Codeblock beschrieben funktionieren. Ich teste das morgen früh mal aus und melde mich wieder.

Gruß, Peter
lonestar
@Peter

Hast du es mal ausprobiert? Hab noch ein wenig rumprobiert. Leider ohne Ergebniss.

Würde es eventl. besser funktionieren wenn ich das Script direkt im Modul aufrufe. Wenn ja, wie setze ich das am besten um.

Gruß

Lonestar
MaZderMind
Ohh ähh.. ja klar biggrin.gif
Also das Problem is dass der cms://-Link erst ganz am schluss ersetzt wird, urlRaw also auch noch auf den cms://-Link angewendet wird (nicht auf den daraus resultierenden http://-Link) und da er damit nix anfangen kann auch keine Session anhängt.

Vllt kann eine anderer dir weiterhelfen: Wi erzeuge ich einen Link auf die aktuelle Seite, an dem die Session-ID anhängt (nach Anmeldung im Frontend).

Gruß, Peter
alexander
also die aktuelle session id müsste man mit

QUELLTEXT
<CMSPHP>echo $sess->id;</CMSPHP>


bekommen
lonestar
@alexander

Wenn ich versuche so wie du beschrieben die Session ID an die URL zu bekommen, gehts auch nicht. Manchmal hängt er die Session sogar 2x ran.

Andere Frage.Vielleicht kann ich ja so das Problem lösen. Anstatt das Script extern aufzurufen, würde ich es gern direkt im Modul ausführen lassen. Wie stell ich das am besten an. Wie gesagt, meine PHP Kentnisse sind nicht die besten. Vom Prinzip müsste es so ablaufen.

Das Modul müsste einen Link generieren und wenn der Link gedrückt wird soll nachfolgendes Script ausgeführt werden.

Vielleicht kann mir ja dabei jemand behilflich sein.

Danke schonmal im Voraus

Gruß

Lonestar
alexander
ZITAT(lonestar @ Thu. 7. September 2006, 12:12) *
manchmal hängt er die Session sogar 2x ran.


dass passiert dann, wenn der benutzer noch keine session hat, dann wird sie das erste mal angezeigt und danach im session cookie gespeichert. hängst du sie manuell noochmal dran, dann wird sie zweimal ausgegegeben.

bei den anderen punkten kann ich dir nicht weiterhelfen, ich denke aber dass du mal den vollständigen code deines externen scripts posten solltest, damit man sagen kann ob und wie man dieses script als modul abbilden kann. dies würde die chanche auf eine lösung sicherlich erhöhen wink.gif
lonestar
Dank dir erstmal für deine Bemühungen. Bin auch schon ein wenig weiter.

Kann mir jemand verraten wie ich auf den Content in einem Container auf der aktuell angezeigten Seite zugreifen kann.


Gruß

Lonestar
alexander
du solltest mal einen blick auf das modul entwicklervariablen werfen dass mit sf geliefert wird. das könnte dir einiges an fragen ersparen wink.gif das gbit es auch ein array $container ...
lonestar
@alexander

Sorry, das ich schon wieder nerve. Aber wie gesagt meine minimalen PHP-Kentnisse bringen mich nicht weiter. Das mit dem Array hab ich auch schon irgendwo gelesen. Leider weiß ich immer noch nicht genau wie ich auf die Daten zugreifen kann. Laut den Entwicklervariablen liegt der Content im Container 50. Ich kann auch noch daraus ersehen das im Container der Wysiwyg2 ist. Weiter komm ich leider nicht.

Gruß

Lonestar
lonestar
Leider musste ich in letzter Zeit merken, das man ohne umfassende PHP-Kentnisse leider bei der Modulentwicklung nicht weiterkommt.
Obwohl ich sehr lernwillig bin, hänge ich leider fest. Vielleicht kann sich
jemand erbarmen, mir einen kleinen Crashkurs über die wichtigsten Variablen in Sefrengo zu geben, und wie man auf die einzelnen Arrays zugreift.

Danke schonmal

Gruß

Lonestar
MaZderMind
Hi
Welche Arrays und Variablen es gibt zeigt dir das Entwicklervariablen-Modul und wie du mit Arrays umgehst erklärt die das PHP-Manual.

Gruß, Peter
lonestar
Hi

Ich hoffe, es fühlt sich jetzt niemand auf den Schlips getreten. Vorweg möchte ich aber trotzdem sagen, das ich wirklich Respekt vor allen haben die aktiv an Sefrengo mitarbeiten. Auch das man auf die meisten Fragen eine Antwort bekommt finde ich super.

Aber. Einige von euch können nicht davon ausgehen, das jeder User mal schnell ein Modul proggen kann. Ich habe in den letzen Wochen festgestellt
das man das auch nicht in 2-3 Wochen lernt. Das ist halt meine Ansicht. Ist auch nicht böse gemeint. Ich hoffe, jetzt kommen keine Antworten, von wegen "wenn duch dich damit nicht auskennst, dann lass es halt.".

MazderMind hat mich ja schon auf die Entwicklervariablen hingewiesen.
Ich kann auch auf die einzelnen Arrays zugreifen. Nur hab ich noch nicht
herausgefunden wie ich an den Content vom z.B. Container[50] herankomme.

Ich habs z.B. über $myTplContent['wysiwyg2'] versucht. Ist das richtig. Oder bin ich hier total auf dem Holzweg. Da wenn ich diesen Array über echo ausgebe, der Content zwar angezeigt wird. Aber nur einmal. Gehe ich ein weiteres mal auf diese Seite, bleibt der Array leer. Und 2. was passiert wenn im Container kein wysiwyg2 ist sondern ein anderes Modul. Würde
es dann auch über $myTplContent['anderes Modul'] funktionieren.

Ich hoffe ich kann trotz meiner kleinen Kritik auf eure Hilfe zählen.

Dank euch im Voraus

Gruß

Lonestar
saschapi
Auch wenn ich dir aus Zeitgründen nicht so ausführlich helfen kann, soll doch erwähnt werden, dass genau für solche Dinge ein forum ja auch da ist wink.gif.
Genervt sind nur alle wenn jemand schreibt. Ich kann nix, ich mach auch nix, wer baut mir sowas mal eben für umsonst (gesteigert durch den Zusatz: damit ich das für eine heiden Kohle an meinen Kunden verkaufen kann) tongue.gif

Es wird sich aber sicherlich eine Lösung für dich finden. genau so hab ich übrigens auch PHP zu lernen angefangen...
lonestar
Hi

Nochmal zu meinem Problem. Habe mich heute nochmal rangesetzt. Um grundsätzlich zu sehen was im Array "Container" enthalten ist, habe ich einfach auf jede Seite ein Modul gesetzt in dem folgender Code steht.

QUELLTEXT
<CMSPHP>
var_dump ($container);
</CMSPHP>


Dabei musste ich feststellen, das, wenn ich die Seite aufrufe, der komplette Inhalt des Arrays angezeigt wird.
Gehe ich ein zweites mal auf die Seite ist der Array leer. Erst wenn irgendetwas an der Seite geändert wird oder der Cache im Backend gelöscht wird, ist wieder etwas im Array drin. Muß ich den Cache im Modul irgendwie löschen. Oder wie kann ich das ganze umgehen.


Danke im Voraus

Gruß

Lonestar
ketti
Schau dir doch das Druckversion-Modul an und versuche zu verstehen was genau dort gemacht wird. Das kann eigentlich fast alles was du brauchst.

Wenn du nur die komplette Seite als PDF ausgeben willst, reicht es im Prinzip aber ein neues Modul zu erstellen und folgendes in die Modulausgabe zu packen:

QUELLTEXT
$cfg_client['manipulate_output'] = '$pdf_data = html2pdf($output); header("Content-type: application/pdf"); echo $pdf_data;';
lonestar
Sorry Ketti

Aber wenn das für mich so einfach wäre, würd ich bestimmt nicht so viele Fragen stellen. Ich sitzte jetzt fast 6 Wochen daran und habe keinen Plan wie ich das ganze umsetze. Wahrscheinlich würde jemand mit mehr PHP-Kentnissen das ganze in 2 Stunden erledigt haben. (oder auch schneller).

Ich habe mir auch das Druckausgabemodul angeschaut. Leider schau ich dort wie ein Schwein ins Uhrwerk. Weil ich keine Ahnung habe, was genau dort passiert. Ich habe mir das ganze wirklich einfacher vorgestellt. Komme aber ohne Hilfe nicht weiter. Und wenn man nach 4 Wochen noch nicht mal ein kleines Erfolgserlebniss hat macht das ganze dann irgendwann keinen Spaß mehr.

Gruß

Lonestar
speedweb
Hallo miteinender,
ich habe mich auch schon mehrmals mit der PDF erstellung befasst.
Nach langem hin und her verwende ich nun FPDF.
Das ganze ist opensource was schon mal nicht schlecht ist.
Vorteile sehe ich darin dass es recht schnell zu verstehen ist,
weiters Headers und Footer verwenden kann und recht schnell immer
weitere neue möglichkeiten dazu kommen.

Da ich mit SEFRENGO und "noch" mit DEDI arbeite, weiss ich dass es
im DEDI mal ein Modul gegeben hat für die PDF erstellung.
Dies hat soweit gut funktioniert hat aber die pdflib erweiterung verwendet
und diese ist kostenpflichtig. Daher ist dort nichts mehr weiter geschehen.

Vielleicht ist es mal ein Versuch wert das Modul zu suchen und das ganze
an FPDF anzupassen. Im Modul müsste eigentlich soweit alles drin sein was
benötigt wird.

Sobald ich das aktuelle Projekt abgeschlossen habe werde ich mir das auch
nochmals genauer ansehen. Denn zur Zeit setze ich FPDF nur direkt ein.

Gruss Thomas
SefrenTo
Hört sich doch gut an.

Ich denke das beste wäre wirklich, das "Druckversion"-Modul um eine "als PDF speichern"-Funktion zu erweitern.

Wenn ich mir das hier ansehe, scheint das doch gar nicht so kompliziert zu sein:
http://html2fpdf.sourceforge.net/

PS.
Ich hab gerade mal "dompdf" (http://code.google.com/p/dompdf/) getestet. Dabei muss man nur die Dateien auf den Server laden und kann dann mit einem einfachen Link per GET die Seiten-URL übergeben. Das sieht dann etwa so aus:
<a href="http://url.de/dompdf/dompdf.php?base_path=www/test/&input_file=http://url.de/index.php?idcatside=8">als PDF speichern</a>

Leider weiß ich nicht wie ich das in das "Druckversion"-Modul einfügen kann, sonst würde ichs eben machen :-)
Dieses ist eine vereinfachte Darstellung unseres Foreninhaltes. Um die detaillierte Vollansicht mit Formatierung und Bildern zu betrachten, bitte hier klicken.
Invision Power Board © 2001-2024 Invision Power Services, Inc.