PDF Rechnung Anpassungen

Ich habe bereits Anpassungen bei der PDF Rechnung vorgenommen, aber mir fehlen noch ein paar:

1.) Wie kann ich den Dateinamen ändern? Statt “Bestellnummer_Nachname.pdf” sollte" Rechnungsnummer_Nachname" stehen

2.) Kann ich eine Hintergrundgrafik alias Briefpapier einfügen?

3.) Bei Sonderzeichen im Namen wird der PDF Dateiname nicht fertig gestellt, sondern bricht davor ab

Danke für eure Hilfe!

Zu Punkt 1, mal hier schauen: http://www.oxid-esales.com/forum/showthread.php?t=8055.

Danke für den Link, zumindest die Zeile schon mal gefunden

Habe die Zeile auch geändert, wie folgt:

$sFilename = $oOrder->oxorder__oxbillnr->value . "_" . $oOrder->oxorder__oxbilllname->getRawValue() . ".pdf";

Nun wird aber nur _Nachname angezeigt

Müsste doch so passen?!

Ja, das sollte so passen. Allerdings wenn man den Link zum ersten Mal für eine Bestellung aufruft wird dabei erst die Rechnungsnummer erzeugt. Daher ist dann noch keine Rechnungsnummer im Dateinamen vorhanden. Wenn man den Link dann ein zweites Mal aufruft ist auch die Rechnungsnummer verfügbar.

Zum zweiten Punkt: PDFs werden mit der TCPDF-Bibliothek erzeugt http://www.tcpdf.org/index.php. Hier ist ein Beispiel für das Einbinden einer Hintergrundgrafik: http://www.tcpdf.org/examples/example_051.pdf und hier der zugehörige Code: http://www.tcpdf.org/examples/example_051.phps. Nun müsste man die Implementierung in Oxid entsprechend anpassen um das zu ermöglichen.

Zum dritten Punkt: Man sollte den String ggf. von Sonderzeichen säubern.

Danke für deine Antwort.

1.) Bei mir scheint auch beim dritten Mal anklicken die Rechnungsnummer nicht als Dateiname auf

2.) Sehe ich das richtig, dass ich folgenden Code einfügen sollte und vor allem aber wohin
:

// full background image
        // store current auto-page-break status
        $bMargin = $this->getBreakMargin();
        $auto_page_break = $this->AutoPageBreak;
        $this->SetAutoPageBreak(false, 0);
        $img_file = K_PATH_IMAGES.'image_demo.jpg';
        $this->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0);
        // restore auto-page-break status
        $this->SetAutoPageBreak($auto_page_break, $bMargin);

3.) Wie kann ich den String von Sonderzeichen säubern?

Zu 1: Also bei mir funktioniert es beim zweiten Anklicken. Hast Du denn eine Rechnungsnummer in der Rechnung drin?

Zu 2: Prinzipiell ja. In der Klasse myOrder wird die pdf-Datei erzeugt. Wenn man den Code hier an der richtigen Stelle unterbringt (im Header der pdf-Datei) sollte es möglich sein. Man wird aber nicht umhinkommen sich ein bisschen mit TCPDF, PHP und den Oxid-Klassen an sich zu beschäftigen.

Zu 3: Man muss schauen welche Sonderzeichen Probleme machen und diese dann z. B. mit php-Zeichenkettenfunktionen ersetzen.

1.) Funktioniert jetzt!

2.) Hm, klingt alles zu kompliziert für mich. Bin ja noch OXID Frischling und PDF/PHP ist nicht meine Stärke

3.) Siehe oben, PHP ist ein Problem für mich

Zu 3: Also ich habe bei mir ein paar Sonderzeichen im Kundenname ausprobiert, z. B. !#&;. Das hat in meiner Installation keine Probleme bereitet. Schon mal an einem anderen Rechner oder mit anderem Browser probiert?

In meinem Fall hatte der Kunde ein “c/o” in seinem Namen

Andere Browser weiss ich nicht, benutze nur Firefox

Also bei mir ersetzt er einen “/” im Dateinamen sogar durch “_”. Steht in Deiner Zeile

$oOrder->oxorder__oxbilllname->getRawValue()

?

also bei lautet der Name so:

Eva Musterfrau c/o Zweitname

Die PDF wird aber so generiert: Rechnungsnummer_Musterfrau

Nach Musterfrau ist Schluss und keine .pdf Endung

Das ist wohl gewollt. Nach einem Leerzeichen wird der Rest abgeschnitten.

Wenn Du das nicht willst, versuch mal:

$oOrder->oxorder__oxbilllname->value

statt

$oOrder->oxorder__oxbilllname->getRawValue()

Könnte aber sein, dass es dann wirkliche Probleme mit Sonderzeichen gibt.

Achso, aber wie ist das dann bei Kunden mit Doppelname mit “-” getrennt?

Und die .pdf Endung fehlt ja auch wie gesagt