Pdf rechnung mit zeilenumbruch

hi,
wir haben dir vers 4.9xxxxx
ich suche die lösung, wie man die spalte “beschreibung” in der pdff-rechnung mit einem zeilenumbruch versehen kann.

leider habe ich noch nichts entsprechendes gefunden. kann jemand mir weiterhelfen?

lg martin

Hallo Martin,

4.9xxxxxx

Habe ich was verpasst?

Zeilenumbruch in PHP kannst Du etwa so realisieren: [B]
[/B]

Oder eben als HTML [B]<br />[/B]

ja klar,
in der datei myorder.php- aber wo kommt der tag hin?

aber was meinst Du mit Beschreibung? Meinst Du vlt. Artikelbezeichnung ?

bei uns steht in der pdf

1 . spalte “menge” ,

  1. spalte “art.-nr.” ,

  2. spalte “beschreibung”, um diese geht es ( de code habe ist bisher nicht verändert)

hier ein beispiel

Benutze:

$oPdf->MultiCell(

danke rubberrcut,
kannst du mir sagen, wo und wie code hin muss?

lieben dank

Na, da wo der Title verarbeitet wird ->anstatt ‘$oPdf->text(’:

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

danke, zeilenumbruch klappt, nur die ganze darstellung der rechnung ist nun total verschoben - schade. …

ich würde an Deiner stelle versuchen mit der schriftgröße zu Experimentieren. Soweit ich beurteilen kann ist Artikelname etwas lang und großgeschrieben. In dem Fall empfiehlt sich wirklich schriftgröße anzupassen.

Um in myorder.php zu arbeiten, muss man erst die Syntax kennen und dann die Werte genau nach individuellen Layouts einstellen:

Beispiel Zeilenumbruch mit Erläuterung:


// ARTIKELBESCHREIBUNG - oxititle - MultiCell provides proper wordwrap eg 2x90 = 180 strings on 2 lines, Position from page eg. left 39 top 130 $oPdf->setFont( 'Arial', '', 8 );
// MultiCell($w, $h, $txt, $border=0, $align='L', $fill=0, $ln=1, $x='', $y='', $reseth=true,[ $stretch=0, $ishtml=false, $autopadding=true, $maxh=0] );
// Cell w=width, h=height, text align L,R,J=left,right,justify, fill=color, ln=line_new 1=beginning of next line,
// x-position, y-position set to $iStartPos adjusted -3.7, reset the last cell height (default true)
 
$oPdf->MultiCell( 90, '', substr( strip_tags( $this->_replaceExtendedChars( $oOrderArt->oxorderarticles__oxtitle->getRawValue(), true ) ), 0, 180), 0, 'L', 0, 1, 39, $iStartPos -3.7, true );

Bei weiterem Bedarf bitte per PM melden.

[QUOTE=mactoo;114033]danke, zeilenumbruch klappt, nur die ganze darstellung der rechnung ist nun total verschoben - schade. …[/QUOTE]

OK, also gar kein Plan? Die Angaben für ‘$oPdf->MultiCell(’ sind etwas umfangreicher. Probier es wie folgt und spiele ein wenig mit den Werten. Der Rest kommt von alleine ;):

$oPdf->MultiCell( /*Breite*/ 100, 1, strip_tags( $this->_replaceExtendedChars( $oOrderArt->oxorderarticles__oxtitle->getRawValue(), true ) )."
",0,'L',0,1,48 /*Abstand links*/, $iStartPos - 3.5 /*Abstand oben*/,true);

Hallo
habe ein ähnlichen Problem.
nur mit der Art.-Nr.
die ist bei uns sehr lang komme auch nicht mit kleinerer schrift gösse hin.
könnte einer von euch mir die Code Zeile hier posten so wie es “rubbercut” gemacht hat .
bekommen es einfach nicht hin.
denke das es um die hier geht.

Original Zeile aus der Datei.

$oPdf->MultiCell(55, $iStartPos, substr(strip_tags($this->_replaceExtendedChars($oOrderArt->oxorderarticles__oxtitle->getRawValue(), true)), 0, 58));

Eigentlich ist oxartnum in Text eingebettet, dessen Breite (28) Du erhöhen kannst, musst aber aufpassen, dass oxtitle, dessen Feld horizontal bei 45 startet, nicht überschrieben wird. Musst halt ein wenig probieren, bis es passt.

$oPdf->text(28, $iStartPos, $oOrderArt->oxorderarticles__oxartnum->value);

1 Like

Guten Morgen an alle,

ich muss dieses Thema auch noch mal aufgreifen. Ich habe die invoicepdfoxorder.php ebenfalls bearbeitet und wollte den Artikeltext erweitern da wir auch mehrzeilige nutzen.

Ich habe die .php erweitert mit:

$oPdf->MultiCell( 100, 1, strip_tags( $this->_replaceExtendedChars( $oOrderArt->oxorderarticles__oxtitle->getRawValue(), true ) ).“”,0,‘L’,0,1,48 , $iStartPos - 3.5,true);

Der ganze Text wird auch angezeigt, allerdings wir der ganze Block nicht nach unten geschoben, der “Zeilenüberlauf” passiert nur für // product title. Der Block mit Summe, MwSt, Versandkosten wird aber nicht passend nach unten verschoben. So überschreibt der Text des product title die Summe etc.

Keiner Ahnung??

PDF Generierung komplex.

Das Überlappen spricht dafür das Du einfach eine Zeile kopierst hast, bisschen was veränderst hast in der Hoffnung wird schon passen…

Die PDF Generierung arbeitet Pixelgenau und da musst solange mit Positionierung ausprobieren bis Du zu einem zufriedenstellenden Ergebnis kommst. Was bei einem Anwendungsfall gut aussieht kann beim nächsten Anwendungsfall schon wieder verschoben aussehen, weil die Inhalte sich natürlich jedesmal unterscheiden.

die einfachste Lösung ist die Zeilenhöhe ($iStartPos) innerhalb der foreach-Schleife sowie die Gesamthöhe der Artikelpositionen ($siteH) um etwa 4mm zu vergrößern →
$siteH += 4;

schau dir mal an wie wir es in unserem WaWi gelöst haben - das erste Bild

@indianer3c
Danke für deine vorwurfsvolle, nichtsagende Antwort.
Fakt ist das ich mir die MultiCell Zeile kopiert habe und so angepasst habe das Sie in Länge und Position passt. Die normale $oPdf habe ich aus kommentiert. Ich denke dies ist auch ein legitimes vorgehen.

Deine Antwort das es mal so und mal so aussieht ist mir auch klar. Die Frage ist doch ob mir wer helfen kann, oder soll ich sagen will… ansonsten, viel geschrieben, wenig gesagt.
Trotzdem Danke für deine Zeit.

@patchwork.de
Vielen Dank auch für deine Hilfe. Ich habe mir eure WaWi auch schon angesehen, aber die ist zu mächtig nur um die Rechnung minimalst zu ändern :). Die foreach Schleife unter //product list werde ich mir mal anschauen. Mir ging es genau darum das mir wer erklären kann wo genau ich eingreifen kann um entweder die Starthöhe des Summenblocks nach unten zu schieben o.ä., der Block mit der Produktbeschreibung darf ja ruhig auch gleich “hoch” bleiben, selbst wenn die Beschreibung nur 1 zeilig ist…