Grinse-Hinze Geschrieben 28. Dezember 2009 Geschrieben 28. Dezember 2009 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 ;-) Zitieren
bequiet Geschrieben 28. Dezember 2009 Geschrieben 28. Dezember 2009 wie wärs mit pdflib ? Damit kannst ausm php script ne pdf erstellen. Isn recht guter Artikel.. PHP-Artikel: PDF-Dateien erstellen mit PHP - HTMLWorld Zitieren
robotto7831a Geschrieben 28. Dezember 2009 Geschrieben 28. Dezember 2009 Oder FPDF. Hat mir schon gute Dienste geleistet. Frank Zitieren
Grinse-Hinze Geschrieben 28. Dezember 2009 Autor Geschrieben 28. Dezember 2009 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 ;-) Zitieren
Grinse-Hinze Geschrieben 28. Dezember 2009 Autor Geschrieben 28. Dezember 2009 Cool.... Hab grad auf die FPDF seite geschaut und da sind mir direkt 2 Zeilen in Auge gefallen: Automatic page break Automatic line break and text justification :-) Ich schau mir das mal genauer an... Danke & Gruß Grinse ;-) Zitieren
Grinse-Hinze Geschrieben 28. Dezember 2009 Autor Geschrieben 28. Dezember 2009 HHhmmm.... hab grad mal das Tutorial durchgelesen. Es macht den Anschein, dass das funktionieren könnte... Ich geh erstmal eine rauchen, hol mir nen Kaffee und dann versuch ich mich daran mal... ;-) Nochmals Danke an euch! Ich meld mich dann nochmal... Grüßle, Grinse ;-) Zitieren
_n4p_ Geschrieben 28. Dezember 2009 Geschrieben 28. Dezember 2009 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. Zitieren
Grinse-Hinze Geschrieben 28. Dezember 2009 Autor Geschrieben 28. Dezember 2009 logisch umbrechen stand nicht im FK... :-P Ich lass das ding einfach umbrechen und gut ist... Ich versuch mich auch erstmal mit FPDF selbst... Ich denke ich bekomm das damit hin... Danke & Gruß Grinse ;-) Zitieren
Grinse-Hinze Geschrieben 28. Dezember 2009 Autor Geschrieben 28. Dezember 2009 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 ;-) Zitieren
Grinse-Hinze Geschrieben 29. Dezember 2009 Autor Geschrieben 29. Dezember 2009 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 ;-) Zitieren
robotto7831a Geschrieben 29. Dezember 2009 Geschrieben 29. Dezember 2009 Ich habe das Problem jetzt nicht verstanden. Du kannst doch Cell und MultiCell gleichzeitig verwenden. Frank Zitieren
Grinse-Hinze Geschrieben 29. Dezember 2009 Autor Geschrieben 29. Dezember 2009 ??? Du meinst ca. so: $myPDF->Cell(15,0,$myPDF->MultiCell(0,5,'asdf')); Mein Problem ist ich kann an der Stelle keine Cell nehmen, weil die den Text nicht umbricht und nach einer MultiCell hängt ein FPDF->Ln(); ... Zitieren
robotto7831a Geschrieben 29. Dezember 2009 Geschrieben 29. Dezember 2009 Nee. $myPDF->Cell(...); $myPdF->MultiCell(...); [/php] Schreib doch mal einen Beispieltext. Vielleicht verstehe ich dann dein Problem. Frank Zitieren
Grinse-Hinze Geschrieben 29. Dezember 2009 Autor Geschrieben 29. Dezember 2009 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 Zitieren
_n4p_ Geschrieben 29. Dezember 2009 Geschrieben 29. Dezember 2009 Bisher habe ich hierzu nur die FPDF->MultiCell() gefunden. Diese jedoch hat einen automatischen LineBreak am Ende. kann nicht nachvollziehen was du meinst. ich setz meine tabellen nur aus multicells zusammen. Zitieren
Grinse-Hinze Geschrieben 29. Dezember 2009 Autor Geschrieben 29. Dezember 2009 ich setz meine tabellen nur aus multicells zusammen. Wie schaffst du das? Bei mir kommt dann sowas raus: Zelle Zelle Zelle Zitieren
robotto7831a Geschrieben 29. Dezember 2009 Geschrieben 29. Dezember 2009 $myPDF->Cell(62,5,$testbesch,1); // Hier bräuchte ich die MultiCell [/php] Dann schreib doch dort MultiCell hin. Frank Zitieren
Grinse-Hinze Geschrieben 29. Dezember 2009 Autor Geschrieben 29. Dezember 2009 Funktioniert nicht... dann rutscht die nachfolgende Zelle in die nächste Zeile der Tabelle... Zitieren
robotto7831a Geschrieben 29. Dezember 2009 Geschrieben 29. Dezember 2009 Ach so. Dann muss mit MultiCell entsprechend Bereiche definiert werden. Dafür sind ja auch die zwei Parameter Breite und Höhe. Frank Zitieren
Grinse-Hinze Geschrieben 29. Dezember 2009 Autor Geschrieben 29. Dezember 2009 K, das klingt plausibel... aber wie kann ich die Höhe angeben wenn ich nichtmal weiß wie oft der umbrechen wird? Zitieren
_n4p_ Geschrieben 29. Dezember 2009 Geschrieben 29. Dezember 2009 (bearbeitet) 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 29. Dezember 2009 von _n4p_ Zitieren
Grinse-Hinze Geschrieben 29. Dezember 2009 Autor Geschrieben 29. Dezember 2009 hhmm... das hört sich kompliziert an, vorallen hab ich dann mit der Zelle in der die Menge steht ein Problem. Hab mal nen Screenshot gemacht: Zitieren
_n4p_ Geschrieben 29. Dezember 2009 Geschrieben 29. Dezember 2009 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 Zitieren
Grinse-Hinze Geschrieben 29. Dezember 2009 Autor Geschrieben 29. Dezember 2009 Passt schon... ich hab mir die Methoden von dem Link geholt und das zeichnen der Rahmen etwas umgebaut... Jetzt funktioniert es... ;-) DANKE! Zitieren
Empfohlene Beiträge
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.