Zum Inhalt springen

Belege auf PHP generieren


Empfohlene Beiträge

Mahlzeit zusammen,

ich bin grad mal wieder ein kleines bisschen am verzweifeln. Ich habe eine Auftragsbearbeitung in PHP programmiert, wo man Kunden, Lieferanten und Artikel pflegen kann (so was ganz kleines)... und jetzt komm ich zu den Belegen (Rechnungen, Angebote, Lieferscheine usw.)

Codetechnisch sieht es an der Stelle so aus, dass ich alle Werte in PHP-Variablen habe, jetzt muss ich diese nur noch in einen Beleg (Word-Doc., PDF, sonstiges) erstellen und speichern.

Hab es schon versucht mit nem HTML welches ich als .doc speichere damit es mit Word geöffnet wird. Das funktionierte auch, jedoch war die Darstellung nicht wirklich einheitlich (Layout hat sich immer wieder verschoben). Docx war auch schon ne idee. Da habe ich ein entsprechendes Dokument mit Platzhaltern vorbereitet und entpackt. Via PHP wurden die Platzhalter ausgetauscht und das DOCX (zip) wieder gepackt und gespeichert. Das hat allerdings nicht richtig funktioniert.

Nun bin ich etwas ratlos wie sich so etwas überhaupt richtig umsetzen lässt ohne z.B. Crystal Reports o.ä. zu kaufen.

Habt ihr vllt. noch ne idee?

Thx 4 Answer

Grüßle,

Grinse ;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

HHmmm... über die bin ich auch schonmal gestolpert, aber für sowas wie ich es brauch ist das schon recht umständlich und kompliziert. Und was ich da sowieso als Problem sehe ist die Fußzeile und die Liste der Positionen in einem solchen Beleg.

Jede Seite des Belegs soll eine Fußzeile enthalten, auf grund des variablen Inhalts weiß ich vorher nicht wie hoch diese sein wird. Selbiges trifft auf die Positionen zu. Im einen Beleg habe ich bspw. 3 Positionen und im nächsten 50. Ich muss also irgendwie herausfinden wie hoch meine einzelnen Elemente sind welche ins PDF hinzugefügt werden.

Daher bin ich auch auf die Idee mit dem vordefinierten Docx gekommen, das Layout wird in der Vorlage vorgegeben und alle weitere macht dann Word.

Vllt. gibts ja noch andere Ideen.

Grüßle,

Grinse ;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

im zusammenhang mit FPDF könnte dich die erweiterung PDML von FPDF interessieren.

da musst du dir nur ein pseudo xml aus deinen daten generieren und das an die PDML klasse übergeben.

hat zwar auch einige nachteile, aber vielleicht hilft es ja für den anfang.

für kopf und fußzeile mußt du lediglich in einer abgeleiteten klasse die methoden Footer und Header überschreiben. mehrere logisch zusammenhängende zeilen sinnvoll umzubrechen ist allerdings n ziemlicher krampf.

Link zu diesem Kommentar
Auf anderen Seiten teilen

soo, ich bins nochmal mit meinem Schlusswort für heute...

Wenn man jemand in die selbe Situation kommt wie ich, dem Wünsche ich dass er diesen Thread findet, denn FPDF sieht im ersten Moment zwar extrem kompliziert aus, es ist aber aus meiner Sicht das kostenlose Non+Ultra wenn es um die Erstellung eines PDFs in PHP geht!

Und nochmals vielen Dank an alle!

Grüßle,

Grinse ;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mahlzeit zusammen,

ich bin da jetzt grad doch noch auf ein Problem mit FPDF gestoßen:

Ich muss eine Tabelle mit den folgenden Spalten abbilden:

- Menge

- Name / Beschreibung

- Zeichnungsnr

- Stückpreis

- Gesamtpreis

Alle Felder außer 'Name / Beschreibung' müssen einzeilig sein (FPDF->Cell()). Das Feld 'Name / Beschreibung' jedoch muss Zeilenumbrüche enthalten können und auch automatisch umbrechen. Bisher habe ich hierzu nur die FPDF->MultiCell() gefunden. Diese jedoch hat einen automatischen LineBreak am Ende.

Hat dafür jemand ne Lösung? (Außer im PHP selbst den Inhalt umbrechen und entsprechend vielen FPDF->Cell() drunter zu hängen?

Danke & Gruß

Grinse ;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, hier meine Tabelle

//Header
$myPDF->SetFont('Times','B','12');
$myPDF->Cell(23,5,'',0);
$myPDF->Cell(18,5,'Menge',1);
$myPDF->Cell(62,5,'Name / Beschreibung',1);
$myPDF->Cell(33,5,'Zeichnungsnr.',1);
$myPDF->Cell(28,5,'Stückpreis',1);
$myPDF->Cell(0,5,'Gesamtpreis',1,1);
$myPDF->Ln(0);

//Positionen
$myPDF->SetFont('Times','','12');
$myPDF->Cell(23,5,'',0);
$myPDF->Cell(18,5,'500',1);
$testbesch = 'keine Ahnung
aslkdjf asdfkjalskdfj aslkdfj asdkfljalskdjfalkj';
$myPDF->Cell(62,5,$testbesch,1); // Hier bräuchte ich die MultiCell
$myPDF->Cell(33,5,'0123456789',1);
$myPDF->Cell(28,5,'0.15 €',1);
$myPDF->Cell(0,5,'75.00 €',1,1);
$myPDF->Ln(0);[/PHP]

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmm ich glaub ich weiß was passiert.

vermutlich setzt fpdf $this->X hinter die multicell (also darunter)

probier folgendes:

leg dir $this->X und $this->Y in 2 temporäre variablen.

$x = $this->GetX();
$y = $this->GetY();[/PHP]

schreib die multicell

und setz X und Y neu mit $this->SetX(wert). hier musst dann ein wenig rechnen.

ok nich pdml, aber fast xD

http://fpdf.de/downloads/addons/3/

NbLines, ganz unten: http://fpdf.de/downloads/addons/3/

Bearbeitet von _n4p_
Link zu diesem Kommentar
Auf anderen Seiten teilen

hab doch gesagt is nich so einfach ^^

ich mach das folgendermaßen:

ich schau mir an was alles so in die zeile rein geschrieben werden soll.

dabei mach ich für jede zelle der zeile eine mulicell. berechne die höhe der zelle. und ermittle gleichzeitig das maximum der zellhöhe in dieser zeile.

dann werden die zellen erstellt. alles mit:

$this->MultiCell($w, $this->FontSizePt+4, $aCell['text'], 0, $aCell['align']);

$w ist die breite. ich muss da auch noch bissel rechnen, du wahrscheinlich nicht, kannst also feste werte eintragen.

edit: die höhe is übrigens Y nich X, sry mein fehler

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...