PDF Rechnung anpassen und editieren?

Hallo an die Community. Ich hoffe, es ist okay, wenn ich mich auch in diesem Thread einklinke, da ich ebenfalls ne Frage zum anpassen der Rechnung (PDF) habe.

Ich möchte die Spalte mit der Artikelnummer verbreitern und dafür die Spalten für Menge und Artikelbezeichnung etwas verkleinern. Leider sagen mir die Angaben der Breitenangabe nicht wirklich viel. Was sagen denn die Werte [B]20[/B], [B]22[/B] und [B]45[/B] im nachfolgenden Code aus? Haben die Werte eine “Einheit” (Pixel oder so)?

[B]Wie bzw. wo kann ich die Spaltenbreite beeinflussen?[/B]


// sold amount
$oPdf->text( 20 - $oPdf->getStringWidth(
$oOrderArt->oxorderarticles__oxamount->value ), $iStartPos,
$oOrderArt->oxorderarticles__oxamount->value );

// product number
$oPdf->setFont( 'Arial', '', 8 );
$oPdf->text( 22, $iStartPos,
$oOrderArt->oxorderarticles__oxartnum->value );

// product title
$oPdf->setFont( 'Arial', '', 10 );
$oPdf->text( 45, $iStartPos, substr( strip_tags(
$this->_replaceExtendedChars(
$oOrderArt->oxorderarticles__oxtitle->getRawValue(), true ) ), 0, 58 ) );


Vielen Dank!

http://www.tcpdf.org/examples.php

Danke für den Link und die vielen Beispiele… Leider ist das ganz schön heftig, wenn man sich bisher noch nicht damit beschäftigt hat. Nein, das soll jetzt keine Ausrede sein, aber um die Zusammenhänge wirklich zu verstehen muss ich schon ein wenig Zeit investieren!

Hat jemand noch einen spezielleren Tipp für mich, um mir ein wenig unter die Arme zu greifen? Ich erwarte keine Komplettlösung, aber vielleicht den ein oder anderen Anstubser in die richtige Richtung… :frowning:

Vielen Dank!

[QUOTE=Harzteufel;110578]

[B]Wie bzw. wo kann ich die Spaltenbreite beeinflussen?[/B]

[/QUOTE]

Hallo,

es gibt hier keine Spalten, sondern Startpositionen. Die erste Zahl nach $oPdf->text( ist die Startposition.
Erhöhst du diese, Beginnt der Text in diesem Fall weiter rechts.

Schiebst du also den Product title weiter nach rechts, indem du 45 zB auf 50 änderst, bekommt die Artikelnr. automatisch mehr Platz.

Welcher Befehl bestimmt die Höhe? (also wo ich Sage in welche Zeile der Text anfängt)

Über $iStartPos wird die Höhe berechnet. Die Variable entsteht aus Zeilenhöhe und Zeilenanzahl. Hier kannst auch eine Zahl eingeben, wenn es fix sein soll.

$oPdf->text( 45, [B]$iStartPos[/B],

Wenn`s ein anderes Feld ist, dann hilft vielleicht folgendes:

http://forum.oxid-esales.com/showthread.php?t=17931&page=2#post114038

Hallo,

ich fange gerade an mich mit Oxid zu beschäftigen, daher entschuldigt meine unwissenheit.

Ich habe soeben die erste PDF Rechnung erstellt, dabei habe ich festgestellt, das bei mir mit Standarteinstellungen der Beschreibungstext den Text von der USt und zum Teil von dem Einzelbetrag überschreibt. Wie kann man das anpassen? :confused:

Schöne Grüße

… die Preise reduzieren auf zweistellige :rolleyes:

oder such die Einträge ähnlich wie


 $this->font( $this->getFont(), '', 10 );

und ändere die 10 in 9 (kleinere Schrift). Vielleicht reichts schon …
Ansonsten mußt du mit der Positionierung spielen - Anleitung s.o.

Vielen Dank, nach einiger Suche hab ich das dann auch gefunden. :slight_smile:

Hallo,

gibts auch eine Möglichkeit die Schriftart, Größen, Zeilenabstände, Farben, etc zu bestimmen?

Rubbercut hat ja was gepostet: http://www.tcpdf.org/examples.php

Da sind Beispiele drin die sich ganz leicht per CSS formatieren lassen. Allerdings ind in der myorder.php keine einzige Formatierung als HTML angegeben.

Gibts hier eine Möglichkeit?

Vielen Dank

mit viel aufwand kannst du nen fussball draus machen

[QUOTE=aggrosoft;145153]mit viel aufwand kannst du nen fussball draus machen[/QUOTE]

zwar nicht nett aber --> :smiley:

@Frage:
versch. (echte) Fonts z.B. so:

protected $_sFontItalic = 'sansitalic';

und dann gibts diese Zeile:

public function font( $sType, $sWeight, $sSize )

d.h. z.B.

$this->font( $this->getFont(), 'B', 8 );

würde dann den normalen Font in (generiertem) Fettdruck und 8pt Größe ausgeben.

Abstände werden meist über die Variable der Entfernung von oben per [B]$iStartPos[/B] ausgegeben. Und nach der Ausgabe mit [B]$iStartPos+1.3[/B] den “Zeiger” weiterrücken.

Farben (z.B. grau):

$oPdf->SetTextColor(114, 114, 114);

Wichtig: Text bricht [B]nicht[/B] automatisch um!
Dafür nimmst Du dann:

$oPdf->MultiCell(165, 0, $this->translate( 'VARIABLE_AUS_CUST_LANG' ), 0, 'L');

dazu siehe: http://www.tcpdf.org/examples/example_005.phps

VG
Oli

Hallo, ich möchte gerne in der PDF Invoice die Zeichenlänge der Beschreibung begrenzen, also ORDER_OVERVIEW_PDF_DESC.

In php würde ich das so machen:

if (strlen($text) >= 30) { $title = substr($text,0, 20) . "..."; }

nur finde ich in den Dateien nirgends die ORDER_OVERVIEW_PDF_DESC

weiss jemand wo ich diese finde?

welche Beschreibung meinst Du?

ich seh da nur den Titel und die Varianteninfo

 // sold amount
            $oPdf->text(20 - $oPdf->getStringWidth($oOrderArt->oxorderarticles__oxamount->value), $iStartPos, $oOrderArt->oxorderarticles__oxamount->value);

            // product number
            $oPdf->setFont($oPdfBlock->getFont(), '', 8);
            $oPdf->text(28, $iStartPos, $oOrderArt->oxorderarticles__oxartnum->value);

            // product title
            $oPdf->setFont($oPdfBlock->getFont(), '', 10);
            $oPdf->text(45, $iStartPos, substr(strip_tags($this->_replaceExtendedChars($oOrderArt->oxorderarticles__oxtitle->getRawValue(), true)), 0, 58));

            if ($blShowPrice) {
                $oLang = oxRegistry::getLang();

                // product VAT percent
                $oPdf->text(140 - $oPdf->getStringWidth($oOrderArt->oxorderarticles__oxvat->value), $iStartPos, $oOrderArt->oxorderarticles__oxvat->value);

                // product price

                $dUnitPrice = ($this->isNettoMode()) ? $oOrderArt->oxorderarticles__oxnprice->value : $oOrderArt->oxorderarticles__oxbprice->value;
                $dTotalPrice = ($this->isNettoMode()) ? $oOrderArt->oxorderarticles__oxnetprice->value : $oOrderArt->oxorderarticles__oxbrutprice->value;

                $sText = $oLang->formatCurrency($dUnitPrice, $this->_oCur) . ' ' . $this->_oCur->name;
                $oPdf->text(163 - $oPdf->getStringWidth($sText), $iStartPos, $sText);

                // total product price
                $sText = $oLang->formatCurrency($dTotalPrice, $this->_oCur) . ' ' . $this->_oCur->name;
                $oPdf->text(195 - $oPdf->getStringWidth($sText), $iStartPos, $sText);

            }

            // additional variant info
            if ($oOrderArt->oxorderarticles__oxselvariant->value) {
                $iStartPos = $iStartPos + 4;
                $oPdf->text(45, $iStartPos, substr($oOrderArt->oxorderarticles__oxselvariant->value, 0, 58));
            }

wenn Du den Title meinst, Du findest das in der invoicepdfoxorder.php. Ich gehe mal davon aus, dass wir über die aktuelle OXID Version reden.

hmm, hast wohl nicht gut gesucht :wink:

  1. https://github.com/OXID-eSales/oxideshop_ce/blob/b-dev-ce/source/modules/oe/invoicepdf/models/invoicepdfoxorder.php#L151
  2. https://github.com/OXID-eSales/oxideshop_ce/blob/b-dev-ce/source/modules/oe/invoicepdf/views/admin/de/invoicepdf_lang.php#L60
  3. https://github.com/OXID-eSales/oxideshop_ce/blob/b-dev-ce/source/modules/oe/invoicepdf/views/admin/en/invoicepdf_lang.php#L60

Hallo MeisterYoda
Hallo vanilla thunder

Danke für eure Antworten. Ich habe das Problem nicht richtig beschrieben:
Ich möchte nicht das Wort “Beschreibung” begrenzen sondern die dazugehörige “Beschreibung des Artikels”, also z.b. steht dann in der Rechnung bei Beschreibung statt: “NOTEBOOKSNAME PROZESSOR RAM HDD” nur noch “NOTEBOOKNAME …”

das Problem ist nämlich, dass ich relativ lange Titel für jeden einzelnen Artikel habe und die PDF INVOICE mir sonst den Titel einfach über die folgenden Felder überschreibt.

Hier finde ich aber nicht die richtige Variable.

Kann mir jemand weiterhelfen?

Hmm, eigentlich ist da doch schon eine Begrenzung auf 58 Zeichen oder sehe ich das falsch?


Was ganz vielleicht noch eine Rolle spielt: Läuft dein Shop im UTF8-Modus?

Hallo Martin

Dein Hinweis war meine Lösung :). Die Zeichenbeschränkung ist ja bereits enthalten und muss nicht nochmal zusätzlich eingebaut werden. Habe die Zahl reduziert et voilà.

Vielen Dank!
Michi

Ist es nicht besser hier mit Zeilenumbrüchen zu arbeiten, so das der Kunde auch später noch weis was er gekauft hat?

Hallo alle zusammen,

ich hätte da auch mal ´ne Frage zum anpassen der Rechnung. Gibt es eine Möglichkeit das in der pdf Rechnung neben den aufgelisteten Artikeln auch deren Bilder zu sehen sind?? So könnte der Kunde anhand der Rechnung schon sehen was er bekommt.
Über einen Tipp würde ich mich sehr freuen :-). Bin etwas aufgeschiessen

Gruß Ivona