ERLEDIGT
NEIN
NEIN
ANTWORTEN
12
12
ZUGRIFFE
1339
1339
EMPFEHLEN
-
Hallo,
ich suche eine Möglichkeit in .NET Seitenorientiert zu drucken.
Die Druckmöglichkeiten die .NET 2.0 derzeit über Drawing.Printing bietet sind mehr als hinderlich.
Ich brauche eine möglichkeit das man noch folgendem Modell drucken kann:
Dim pdoc as new Document
dim ppage1 as new page(width, height)
pdoc.add(ppage1)
ppage1.graphics.drawstring(.....)
'weitere zeichenbefehle)
dim ppage2 as new page(width, height)
ppage2.graphics.drawstring(.....)
'weitere zeichenbefehle)
pdoc.printersettings = ... wie üblich in .NET ein printersettingsobjekt
pdoc.print()
denn nur über ein solches modell ist es möglich eine darstellung der form "Seite x von yyy" zu drucken, der bisherige Printing-ansatz von Microsoft sieht ein stream-basiertes drucken vor, bei dem man wenn eine seite nicht reicht, eine weitere seite anfordern kann (PrintingEventsArgs.HasMorePages = true) jedoch kann man so nicht sagen wenn man mit der seite yyy fertig ist, das er auf seite eins druckt "seite 1 von yyy", denn diese ist durch die stream-behandlung schon längst ins papier "geprägt" wurden....
ich hatte mich jetzt schon mit den neuen klassen des .NET 2.0 befasst, die ein doppelt gepuffertes graphics objekt bereitstellen, soweit ok...
man kann damit im ram ein graphics objekt erzeigen, auf dem man zeichnungen und texte vorrendern kann und diese später auf ein "echtes" graphics objekt übertragen kann, doch die allocate-methode erfordert die angabe einen bezuges, da jedes graphics-objekt einen bezug zu einem control oder der gleichen benötigt
also ich sehe jetzt 2 möglichkeiten
1.
wo finde ich eine fertige umsetzung dieses druckermodelles
oder
2.
wie kann ich ein graphics-objet im RAM erzeugen, das keinen bezug hat, da ja später Printing.BufferedGraphics.Render auf PriningEventsArgs.Graphics angewendet werden soll !!
denn der "Bezug" wird ja erstmals bei der ereignisbehandlung von PrintDocument.PrintPage "sichtbar/nutzbar"
falls fragen sind einfach schreiben....
ICQ# 111614198
-
Fragen hab ich keine, aber beispielsweise eine Anregung.
Halte dich bitte an unsere Netiquette hier auf tutorials.de und beachte die Groß- und Kleinschreibung. Diese ist Pflicht!
Zu deinem Problem:
Entweder du machst dies über einen Report-Generator und nutzt dessen Fähigkeiten oder du druckst beispielsweise über Word, oder du erstellst dir ein entsprechendes Framework selbst.
Was du noch machen kannst: Schreib deine Daten in ein XML und generier dir per XSL ein HTML File, welches du über das Browser-Control anzeigen und auch drucken kannst.
-
Hallo,
danke die Antwort.
Nach dem nochmaligem Lesen und Durchsuchen der Netiquette konnte ich keine Pflicht zur Groß-/Kleinschreibung finden, aber lassen wir das es geht hier um wichtigeres....
Ich habe verschiedenste Reportgernatoren getestet die alle nach dem gleichen Prinzip funktionieren oder deren Funktionen mit mit meinen Forderungen übereinstimmen, z.B. die meisten nutzen als Datenquelle eine ADO .NET Datenquelle oder eine dazu kompatieble Datasource Schnittstelle.
Crystalreports bietet zwar eine Serienbrief-Funktion, doch blicke ich beim Benutzen des Erstellerassistenten nicht durch was er von mir möchte.
XML / HTML wäre ein guter Ansatz, doch kann man XML nicht so einfach auf DIN A4 rendern, woher soll das XML-Dokument wissen die zeile passt nicht mehr aufs Blatt, es ist so schon schwer genug mit dem gegebenen Mitteln eine Seite zu drucken, die sich massiv von Druckvorschau zum Original verändert durch Seitenränder etc.
Das Programm soll außerdem nicht durch "Umleitungen" glänzen, sodass der Benutzer ständig Buttons klicken muss => BrowserControlVorschau => Drucken => OK
sondern Vertrag drucken => pdf | papier
Einmal abgesehen davon das ich XSLT noch nie benutzt habe, aber weiß was es ist, würde es ein riesiger Aufwand sein einen XSLT Transformer zu schreiben.
Word kommt auch nicht in Frage, da das Programm unabhängig sein soll von 3. Software und ich auch aus Überzeugung nie solche Dreckigen Lösungen nutzen würde!
Das passende Framework selbst schreiben, hmmm, das war glaub ich meine Frage, oder?
Wie man das realisieren könnte....
Es ist ja bloß eine Collection von Page-Objekten, die eine Graphics Objekt enthalten, doch dieses Graphics-Objekt kann man leider in .NET nicht instanzieren.
MfG
Patrick LehmannPaebbels Networks
- Webhosting
- Domains
- Weiterbildungen
- Programmierung
- Systemadministration
http://www.Paebbels.com
-
Transformieren ist mit Bordmitteln zu machen. Du müsstest dir nur ein XSL für dein zu druckendes Dokument schreiben. Eine Sache für ein paar Minuten (je nach Aufwand), da benötigst du wesentlich mehr eine eigene Lösung zu entwerfen.
-
Ok,
nehmen wir mal an ich würde XSLT nutzen, dann könnte ich die Daten in XML abspeichern, dann müsste ich im gleichen Zuge darin CSS 2.0 einbasteln für die Formatierung, das müsste man dann wiederum über einen XSLT Prozessor transformieren und würde was erhalten ?
Ich brauche als Ausgabe ein PDF-Dokument nach dem 6.0er oder 7.0 Standard also intern PDF 1.6, ist das glaub ich.
Und wie bekomme ich das Transformierte nun in Papierform?
Natürlich ohne den Umweg es Acrobat öffnen zu müssen?
Außerdem wie realisiert man dann solch ein kompliziertes XML und XSLT Dokument
- Firmenlogo zentriert oben
- Anschrift links oben
- rechts oben Datum, Kundennummer, Rechnungsnummer, Seitenzahl
- Überschrift
- Teilüberschift für jeden Vertrag der in Rechnung gestellt wird
- eine tabellarische Auflistung der wichtigsten Vertragspunkte und dahinter der Preis
- Trennung
- das ganze wiederholt sich für jeden Vertrag, beim Seitenende muss eine neue Seite angefangen werden
- Rechnungssumme
- Zahlungshinweise + Hinweis auf Kleinunternehmerregelung
- Rechteckiger Footer mit Anschrift, Bankverbindung und Steuernummer
Es war schon schwer genug ein ansprechendes Desin in Word zu entwerfen, ich glaube kaum das es leicht wird einen XML, einen XSLT und einen Tranbsformer zu schreiben....
Könnten Sie mir denn ein solches XSLT Beispiel zeigen ?
Bitte danna ber komplett vom XML Dokument, über den Umsetzer bis zum fertigen Resultat.Paebbels Networks
- Webhosting
- Domains
- Weiterbildungen
- Programmierung
- Systemadministration
http://www.Paebbels.com
-
Ähm, also worum gehts jetzt eigentlich? Soll das Endergebnis ein Ausdruck sein, oder soll es ein PDF sein?
Wie ich bereits gesagt habe, das XSL würde das XML nach HTML transformieren. Alles was mit HTML möglich ist, kann damit verwendet werden. CSS ins XML einzubauen - ok, ich denke es war spät wie du dein Posting verfasst hast.
Die Seite einfach mal im HTML baun und dann in ein XSL umwandeln. Das ist wirklich nicht schwer und da gibt es auch genügend Ressourcen.
Und nochmal: Einen Transformer musst du nicht schreiben. Das ist im Framework alles schon dabei. Es ist ja völlig egal was wohin transformiert wird. Das Teil arbeitet immer gleich, ergo fällt dieser Punkt weg.
Zum Thema XSL: http://www.w3.org/Style/XSL/
Und ein Beispiel gibt es hier: http://www.brics.dk/~amoeller/XML/xslt-4.1.html
PS:
Zum Thema Netiquette hattest du nichts gefunden: Punkt 15 durchlesen
-
Ok es war anscheinend wirklich schon spät *g*
Also es müssen im Normalfall 2 Exemplare erstellt werden, einen in Papierform und eines als PDF, welches auf einem Datenträger gespeichert wird und dann dem Kunden per E-Mail zugesagt wird.
Die PDF-Datei muss den Standard der Versionen 6.0 oder 7.0 erfüllen, inkl. Passwortschutz, vieleicht kommt noch die Signierung hinzu.
Das mit dem CSS, ich hab das mal irgendwo gelesen, dass man XML eine Menge einbauen kann....aber egal.
Ich werd mir mal diesen Link von Ihnen zu Gemüte ziehen.Paebbels Networks
- Webhosting
- Domains
- Weiterbildungen
- Programmierung
- Systemadministration
http://www.Paebbels.com
-
Zum Thema PDF:
http://davidhayden.com/blog/dave/arc...04/11/210.aspx
http://csharp-source.net/open-source/pdf-libraries
Hoffe das hilft dir weiter.
Ad XML + CSS: Baust du wenn ins XSL ein.
-
10.05.06 06:32 #9
Mit XML und XLST kenne ich mich aus aber wie kann ich die beiden unter c# oder .NET zusammen bringen und drucken?
Wäre super wenn mir jemand ein Sampel posten könnte.
THX
-
System.Xml.Xsl.XslTransform ist dein Freund.
-
13.05.06 20:50 #11
Danke für den Tipp, in .NET 2.0 ist es allerdings System.Xml.Xsl.XslCompiledTransform!
Jetzt habe ich noch ein paar Fragen zum Drucken:
1. Ich schreibe jetzt den HTML Output in eine Datei und lade die in einen System.Windows.Forms.WebBrowser in dem ich die Uri auf die Datei einstelle, das dauert alerdings recht lang. Gibt es einen Weg die HTML Daten beispielsweise über einen Stream, direkt aus XslCompiledTransform in den Browser zu bekommen?
2. Wie kann ich beim Drucken aus einem System.Windows.Forms.WebBrowser den Drucker bestimmen?
3. Gibt es einenen anderen Weg ausser über System.Windows.Forms.WebBrowser zu Drucken?Geändert von hagbard_celine (13.05.06 um 21:02 Uhr)
-
14.05.06 03:04 #12
Punkt 1 habe ich selbst herraus gefunden:
Über webBrowser1.DocumentStream kann man dem Browser einen Stream zuweisen in den per xslt.Transform der HTML Code geschrieben wurde.
Habt ihr eine lösung für 2 u. 3?
-
ad 2: Nein. Es gibt aber angeblich ein ActiveX-Control, welches dies bewerkstelligt.
ad 3: Nein, ausser du baust die Webbrowser-Funktionalität nach.
Ähnliche Themen
-
Drucken in SWT
Von Tobias Köhler im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 15.08.07, 14:09 -
Drucken in C#
Von Codebug im Forum .NET Windows FormsAntworten: 2Letzter Beitrag: 14.07.07, 16:11 -
Drucken
Von SirWayne im Forum JavaAntworten: 0Letzter Beitrag: 02.06.07, 19:33 -
drucken
Von DarkSean im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 10.10.05, 00:27 -
Drucken
Von IFR im Forum .NET ArchivAntworten: 2Letzter Beitrag: 14.03.05, 09:13





Zitieren
Login





