Content-Seiten als PDF laden

xt:Commerce Add comments

Auf der Grundlage des Moduls “PdfRechung” habe ich nun auch das Modul geschrieben mit dem es möglich ist die Content-Seiten (AGBs, Lieferung usw.) als PDF zum Download anzubieten. Das Modul erkennt einfache HTML-Tags wie <b>, <u>, <i>, <a>, <img>, <p>, <br>, <strong>, <em>, <font> mit Schriftart und Farbe, <tr>, <blockquote>, <h1>, <h2>, <h3>, <li>, <ol>, <ul>. Man sollte aber nicht erwarten, dass jede HTML-Seite perfekt in PDF umgewandelt wird. Daher bitte darauf achten, was im Content steht und valides HTML schreiben.

Als erstes muss das Modul PdfRechung installiert werden. Wenn man keine Pdf-Rechung haben möchte, muss beim Kopieren die Option wählen die bestehende Dateien nicht zu überschreiben. Wurde eine frühere Version des PDF-Moduls bereits installiert, müssen nur die Dateien des ‘PdfBriefe’-Ordners ersetzt werden.

Als Nächstes muss diese Datei geladen und in den Root-Ordner entpackt werden:
pdfcontent.zip

Danach wird die Datei shop_content.php im Root-Ordner verändert werden. Dafür muss die Zeile (ungefähr) 143, wo folgendes steht:
} else {
$content_body = $shop_content_data['content_text'];
}

Durch folgendes ersetzt werden:
} else {
$smarty->assign('BUTTON_DOWNLOAD', '<a href="'.xtc_href_link('pdfContent.php', 'coID='.$_GET['coID']).'" target="_blank">'.xtc_image_button('button_downloadpdf.gif', IMAGE_BUTTON_DOWNLOADPDF).'</a>');
$content_body = $shop_content_data['content_text'];
}

In die deutsche Sprachdatei ‘german.php’ des “lang/german” Ordners (von XT, nicht des PDF-Moduls) kommt der Eintrag:
define('IMAGE_BUTTON_DOWNLOADPDF', 'Als PDF speichern');

Und in die Config-Sprachdatei
[content]
text_needpdfreader = '*) Um die PDF-Datei betrachten zu können, benötigen Sie den Adobe Acrobat Reader. Dieser steht Ihnen kostenlos bei <a href="http://www.adobe.com/de/products/acrobat/readstep2.html" target="_blank">www.adobe.com</a> zum Download bereit.'

Der Button mit dem Namen ‘button_downloadpdf.png’ (bzw. ‘.jpg’, je nach dem was man verwendet) kommt in das Templateverzeichniss in buttons/german oder english.
Damit das Ganze auch angezeigt wird, muss auch noch das Template verändert werden. In der Datei module/content kann man den Button wie folgt darstellen:
<table style="width:100%" border="0">
<tr>
<td>
{$BUTTON_DOWNLOAD}
</td>
<td align="right">
{$BUTTON_CONTINUE}
</td>
</tr>
</table>
{if $BUTTON_DOWNLOAD}
<br /><small>{#text_needpdfreader#}</small>
{/if}

Um die Grafik des Buttons müsst ihr euch aber selbst kümmern ;)

Eine Demo-Pdf kann man sich hier anschauen.

Einbau auf eigene Gefahr. Ich übernehme keine Verantwortung und gebe keine Garantie. Falls jemand Fragen hat, stehe ich gerne zur Verfügung!

UPDATE: kleiner Trick: wenn man auf einer Content-Seite verhindern möchte, dass ein PDF-Download-Button erscheint (z.B. beim Impressum), muss diese nicht im Textfeld des Content-Managers, sondern als .html-Datei auf den Server geladen und ausgewählt werden.

Vielen Dank an alle, die meine Arbeit unterstützen möchten, in dem sie mir eine Tasse Kaffee spendieren ;)
Ich bedanke mich bei allen für den Kaffee!


Und ganz unauffällig kommt etwas Werbung..

24 Responses to “Content-Seiten als PDF laden”

  1. Twols Says:

    Hallo! Leute, ich wäre echt dankbar, wenn jemand seine Meinung zu diesem Modul äußern würde. Ich könnte evtl. etwas verbessern.

  2. Carsten Says:

    Hallo
    Bin durch Zufall auf Deine Rechnung per pdf gestoßen.
    Sobald ich die Tage mal so richtig Zeit habe, werde ich Sie mal bei mir einbauen.
    Gruß aus RS

  3. Mathias Says:

    Hallo Twols. Super Sache! Danach habe ich die ganze Zeit gesucht. Leider kommt bei mir folgender Output, wenn ich auf den Button drücke: “FPDF error: Some data has already been output, can’t send PDF file”. Hast Du eine Ahnung was das für mich bedeutet?

  4. Mathias Says:

    Sorry, hat sich erledigt. Ich hatte wohl zu viel in der german.php rumgefuscht. Jetzt funktioniert es einwandfrei. Also Hut ab. Danke für dieses Modul.

  5. Mathias Says:

    Ok. Es funktioniert sehr gut, ausser: Die Überschrift wird nicht mit kreiert. Also z.B. Versandkosten oder AGB. Muss man das extra noch einmal im Content-Manager in den Content-Text hineinschreiben? Lieben Gruß, Mathias

  6. Twols Says:

    Eigentlich ja. Denn die Überschrift ist meistens im Text mit dabei. Zumindest bei mir:) Wenn’s wirklich sehr notwendig sein sollte, könnte ich mir überlegen, wie man die Titel mit einbaut.

  7. crusher1895 Says:

    Hallo, und Herzlichen Dank für diese Arbeit!
    Kleine Frage: Kann man die Dateinamen der ausgegebenen pdf’s noch irgendwie anpassen an Rechnung, Lieferschein, Datenschutzerklärung und so weiter, ich meine so wie sie im System hinterlegt sind?

  8. Twols Says:

    Leider nicht. Zumindest habe ich das nicht hinbekommen. Das Adobe-Plugin übenimmt den Namen aus der URL trotz aller Bemühungen.

  9. crusher1895 Says:

    Trotzdem herzlichen Dank für diese scripts!

  10. crusher1895 Says:

    Bei mir wurde der Erklärungstext nicht angezeigt. Hier ‘meine’ Lösung:

    {config_load file=”$language/lang_$language.conf” section=”content”}

    Als erste Zeile in die content.html des templates einfügen!

    @waasa: Ich hoffe es ist erlaubt!

  11. xtHase Says:

    ist es auch möglich so einen PDF download für die Produkt Info anzubieten ?

  12. Twols Says:

    Ja, es ist möglich:)

  13. Ramon Pose Says:

    bedeutet möglich in arbeit ;-)?

  14. Twols Says:

    Eigentlich nicht:) Ich habe gerade sehr viel zu tun, und kann nun wirklich nicht jeden Wunsch in Erfüllung bringen. Wenn ich mal Zeit habe (in einem Monat oder in zwei), werde ich darüber nachdenken.

  15. Ramon Pose Says:

    tolle sache!

  16. Uwe Says:

    Das Rechnugs-script funktioniert ja super, aber bei diesem Contex-Script kommt leider, wenn man die pdf generieren will immer (wobei in Zeile 135 das Ende des Script steht ?>):
    Parse error: syntax error, unexpected ‘;’, expecting T_FUNCTION in /srv/www/vhosts/jahnke-shop.eu/httpdocs/shop/admin/PdfBriefe/PdfBrief.php on line 135

    Ich würde ja auch gerne versuche das das auch Script für Produkte funktioniert, aber diesen 2§$”%$&” Fehler find ich nicht.

    Weiß jemand Rat?

  17. Twols Says:

    Komisch. Ich finde eigentlich nichts im Code, was den Fehler verursachen könnte. Zwei Fragen: Welche PHP-Version läuft auf dem Server und ob mein Modul irgendwie verändert wurde?

  18. Uwe Says:

    PHP Version 5.1.2
    ich habe die oben beschriebenen Änderungen eingetragen, die Buttons hochgeladen und den Code für module/content habe ich bei content.html eingebaut. Allerdings habe ich ein reines CSS template, so das ich die Tabelle weggelassen habe:
    {$CONTENT_HEADING}
    {if $file} {$file}
    {else} {$CONTENT_BODY}
    {/if}

    {$BUTTON_DOWNLOAD} {$BUTTON_CONTINUE}
    {if $BUTTON_DOWNLOAD} {#text_needpdfreader#}
    {/if}

  19. Uwe Says:

    Hallo, hat irgendwer eine Idee wie ich das noch zum laufen kriege?

  20. Twols Says:

    Mein Vorschlag ist, dass ich mir die Sachen über teamviewer anschaue. Denn so kann ich gar nicht sagen, woran es liegen könnte. Wenn Sie einverstanden sind, kontaktieren Sie mich über eMail.

  21. Uwe Says:

    Wenn du mir das mit dem teamviewer erklärst ist das ok.

  22. Peter Says:

    Hallo,

    super addon nur hab ich eine Frage. Was muss ich einstellen das der Lieferschein auto. als pdf und nicht html versendet wird?

  23. Twols Says:

    Hallo!
    Das geht leider gar nicht…

  24. Tobias Says:

    Danke für das Plugin!
    Zwei Fragen: 1) Kann es sein, dass Bilder nicht unterstützt werden?. Ich verwende ein JPG in einer Content Seite und bekomme dann folgende Meldung in neuem Browserfenster “FPDF error: Missing or incorrect image file:” dann wird der Pfad des Bildes angezeigt.
    2) Ich hatte gehofft, dass der PDF Druck gerade auch aus dem Kassenbereich heraus funktioniert, wo der Kunde bestätigen muss, dass er die AGBs zur Kenntnis genommen hab. Meines Wissens ist es ratsam hier nochmal das Speichern des PDFs anzubieten. Geht das irgendwie?

    Danke

Leave a Reply

WP Theme & Icons by N.Design Studio
Internetservice Köln
Entries RSS Comments RSS Anmelden