Laden...

Drucken: Rechnungen / Lieferscheine

Erstellt von xxMUROxx vor 13 Jahren Letzter Beitrag vor 13 Jahren 14.647 Views
xxMUROxx Themenstarter:in
1.552 Beiträge seit 2010
vor 13 Jahren
Drucken: Rechnungen / Lieferscheine

Hallo,

ich beschäftige mich momentan mit dem Drucken und möchte eine Fixed Page das ich per Code erstelle drucken. Funktioniert alles, jedoch möchte ich im Body ein Grid hinzufügen das n-Elemente beinhaltet. Diese Elemente sind variabel hoch. Dadurch muss ich ausrechnen ob das zu hinzufügende Element noch auf der Seite Platz hat. Wie komme ich auf die Höhe des hinzugefügten Elements?

Zugriff aufs lineElement gibt folgende Werte:
ActualHeight = 0
Height=NaN

Ich hoffe ich habe es nicht zu kompliziert erklärt. Hier ein teil des codes

class CustomFixedDocument : FixedDocument
{
    [...]
    public void AddNewDocumentPage()
    {
        FixedPage page = new FixedPage();
            
        page.Width = PrintableDinA4Width;
        page.Height = PrintableDinA4Height;
        page.Margin = PageMargin;
        PageContent page1Content = new PageContent();
        ((IAddChild)page1Content).AddChild(page);
        page1Content.Child.Background = Brushes.Red;
            
        Pages.Add(page1Content);
        SetGrid();
    }
    public void SetGrid()
    {
        Grid g;
        [...]
            if(g.ActualHeight + elementToInsert.ActualHeight < PrintableDinA4Height)
        [...]
        this.Pages[Pages.Count - 1].Child.Children.Add(g);
    }
}

Gruß und Dank
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

F
10.010 Beiträge seit 2004
vor 13 Jahren

Und warum nimmst du keinen Report statt alles selbst zu implementieren?

xxMUROxx Themenstarter:in
1.552 Beiträge seit 2010
vor 13 Jahren

Weil es eine Rechnung/Lieferschein werden soll und diese je nach Seite (k)einen Header/Footer und unteschiedelichen Body haben.

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

F
10.010 Beiträge seit 2004
vor 13 Jahren

Was hat das mit meiner Frage zu tun?

xxMUROxx Themenstarter:in
1.552 Beiträge seit 2010
vor 13 Jahren

Da ich mal einen Report benutzt habe und dabei auf Probleme mit Header/Footer gestoßen bin, habe ich mich auf die andere Weise entschieden.

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

F
10.010 Beiträge seit 2004
vor 13 Jahren

Achso, weil Du früher mal Probleme mit einem Report hattest, willst Du dir jetzt viel mehr Probleme einhandeln, indem Du alles selber machst?

Nee, ist logisch.

Welches Problem hast Du denn gehabt?
Welches Problem siehst Du für diese Rechnung/Lieferschein?

xxMUROxx Themenstarter:in
1.552 Beiträge seit 2010
vor 13 Jahren

Ich hatte folgendes Problem dass ich z.B wollte dass die Summe der Rechnung am "unteren" Ende der letzten Seite haben will und dass die Rechnung nur ein mal den Adressanten im Header haben sollte. Jedoch war ich nicht imstande das zu bewerkstelligen. Das Problem lag vor allem da mein Auftraggeber die Summe am unteren Ende wollte und nicht dort, wo die Tabelle aufhörte.
btw: ich nahm fyiReporting, aufgrund da es free ist.

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

T
146 Beiträge seit 2004
vor 13 Jahren

Also ich verwende Crystal Reports, welches mit Visual Studio ja mitgeliefert wird.

Dort sind diese Probleme, die du hattest nicht mal ein Ansatz eines Problems.

Aber eine Frage hätte ich schon:

Was haben Rechnungen / Lieferscheine mit einer Tabellenform zu tun? Bis auf den Detailbereich haben die ja genau 0 gemeinsam.

Berichte haben auch den sehr angenehmen Vorteil, dass man Briefköpfe und ähnliche Dinge, die man für solche Dokumente braucht recht einfach machbar sind, oder schon fertig mitgeliefert werden.

Meine Empfehlung: Investiere mal 2 - 4 Stunden und schau dir Crystal an. Danach denkst du niewieder darüber nach ein Grid als Rechnung auszudrucken.

F
10.010 Beiträge seit 2004
vor 13 Jahren

Geht mit dem ReportViewer genauso, nur das man dieses unsäglich Installationsgedöns nicht hat.

1.820 Beiträge seit 2005
vor 13 Jahren

Hallo!

Ein - meiner Meinung nach - weiterer Vorteil vom ReportViewer gegenüber den Crystal Reports ist, dass die Report-Datei XML-kompatibel ist.

Crystal Reports haben ein binäres Format, der Viewer bietet aber mehr Möglichkeiten zum Export der Daten.

Nobody is perfect. I'm sad, i'm not nobody 🙁

T
146 Beiträge seit 2004
vor 13 Jahren

Hab nur Crystal als Beispiel genommen, weil ich mich mit den anderen einfach nie beschäftigt habe, was an

a) Zeitmangel und

b) historisch bedingt

liegt.

Aber ne Rechnung wird ja wohl mit fast allen Tools dieser Art lösbar sein.

Ich trau mich kein Urteil darüber abzugeben, was besser oder schlechter ist, aber Crystal in ein Setup einzubinden ist mittlerweile auch nicht mehr schwer, da es das mittlerweile glaub ich schon als MSI gibt, also keine komischen merge files, die irgendwo versteckt sind und ähnlich seltsame Dinge mehr.

Gib Bescheid, ob du mit nem Report weitergekommen bist.

3.825 Beiträge seit 2006
vor 13 Jahren

Hallo Muro,

ich habe Rechnungen und Reports schon mit Crystal, fyi, Report Services und mit eigenen Routinen erstellt.

Für mein Programm benutze ich eigene Routinen und einen eigenen Formular-Generator, da die zahlreichen Anforderungen an einen variablen Rechnungsdruck nicht mit einem Report-Generator abzudecken sind (meine Meinung).

Crystal würde ich nicht nehmen da es extra installiert werden muss und nicht auf allen Rechnern läuft. Beim Stapeldruck von Rechnungen kann es zu einem Memory-Leak kommen.

Der Report Viewer kann das genauso, es gibt bei gotreportviewer sogar ein Beispiel dazu (Invoice-Maker).

In VS2010 kann man sogar RDL2008 und mit ein paar Tricks RDL2010 benutzen, der Kunde kann sich dann seine Rechnungsformulare selbst anpassen.

Zu Deinem Problem im ersten Beitrag : Mit MeasureString(Text, font).Height kannst Du die Höhe der Ausgabe ermitteln.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

xxMUROxx Themenstarter:in
1.552 Beiträge seit 2010
vor 13 Jahren

Hallo,

ich schulde euch noch einen Post bezüglich wie ich es gelöst habe.
Ich mir eine eigene Klasse erzeugt die alles managed.
Dazu wird jetzt berechnet ob ein neues Item der Rechnung noch auf der Seite platz hat oder nicht.

Bin auch BerndFfm's Meinung:

da die zahlreichen Anforderungen an einen variablen Rechnungsdruck nicht mit einem Report-Generator abzudecken sind

Anbei ein Screenshot wie es aussieht.

Gruß Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

1.457 Beiträge seit 2004
vor 13 Jahren

Hallo xxMUROxx,

Das sieht doch gut aus. Gibt es auch die Klasse 😉 fg

3.825 Beiträge seit 2006
vor 13 Jahren

Sieht Klasse aus !

Geht das auch mehrsprachig ? 😉

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

xxMUROxx Themenstarter:in
1.552 Beiträge seit 2010
vor 13 Jahren

@Timur, ja gäbe es schon, ist aber ziemlich auf das aktuelle Projekt angepasst. Wenn Interesse bestände wäre ich auch bereit es etwas für die Allgemeinheit umzuändern. (Früher oder später werde ich das sowieso machen)

@BerndFfm, die Tabelle(Header,Spalten),Footer,Header muss man sich selbst definieren. Desswegen ist es zu jeder Sprache kompatibel 😁

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

U
208 Beiträge seit 2008
vor 13 Jahren

Eventuell ist hier auch MigraDoc (in Kombination mit PDFsharp) interessant: PDFsharp/MigraDoc

Gibt sogar ein Beispiel für eine Rechnung: http://www.pdfsharp.net/wiki/Invoice-sample.ashx

Grüße,
Andreas

F
155 Beiträge seit 2009
vor 13 Jahren

Hallo xxMUROxx,

saubere Arbeit 👍 , wäre schön wenn du uns eine Klasse zur Verfügung stellen würdest

Desswegen ist es zu jeder Sprache kompatibel 😄

Es handelt sich ja schließlich nicht um Wegweiser 😉

"We better hurry up and start coding, there are going to be a lot of bugs to fix."

xxMUROxx Themenstarter:in
1.552 Beiträge seit 2010
vor 13 Jahren

saubere Arbeit , wäre schön wenn du uns eine Klasse zur Verfügung stellen würdest

Dankeschön!
Werde ich machen, sobald ich sie etwas angepasst habe. Ich werde mich in den nächsten Wochen diesbezüglich in diesem Thema nochmals melden.

Es handelt sich ja schließlich nicht um Wegweiser

👍

Hinweis von michlG vor 13 Jahren

Habe die DLL in das Projekte Forum verschoben..
Siehe: DLL zum Drucken von Rechnungen / Lieferscheinen

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp