Benutzer mit den meisten Antworten
PrintDocument mit FromPage / ToPage

Frage
-
Ich habe ein Problem mit der PrintDocument Routine. Ich versuche gerade eine einen Ausschnitt aus einer Liste zu drucken. Beispiel : das Gesamtdokument hat 70 Seiten, ich möchte nur Seite 5 drucken.
Nun habe ich schon festgestellt, das die zurückgegebenen Parameter aus "PrintDialog" keineswegs automatisch den Druck einschränken (schade eigentlich). Ich versuche nun in der korrespondierenden Routine die nicht gewünschten Seiten zu unterdrücken. Das Problem, das hierbei auftritt bezieht sich auf die "HasMorePages" - Eigenschaft.
Wenn ich "HasMorePages" überspringe, dann ist die Gesamtroutine sofort beendet, d.h. in dem Szenario wäre nach einer leeren Seite Schluß mit dem Druck (die eigentlich Druckausgaben "e.Graphics.DrawString(.......)" überspringe ich einfach.
Überspringe ich "HasmorePages" nicht, dann bekomme ich in dem aktuewllen Fall 4 Leere Seiten, dann die eine gewünschte Seite. Ich weiß an der Stelle nicht mehr weiter, da es sich hierbei auch um ein nicht eben seltenes Szenario handelt, wäre es auch sehr wichtig für mich es zu lösen.
Antworten
-
Hallo,
zuerst: die Arbeit kann Dir das PrintDocument nicht abnehmen, da es nicht weiß, was überhaupt gedruckt wird.
Um die nicht gewünschten Seiten zu überspringen darfst Du diese nicht ausgeben,
sondern musst die Bereiche auslassen. Wobei man dabei trotzdem errechnen muss,
welches Element auf die (hier vier) auszulassenen Seiten käme.
Wie das auszusehen hat, hängt von dem Inhalt selbst ab.
Für Zeichenketten kann man z. B. zuvor mit MeasureString den Platzbedarf ermitteln.
Und solange die Zeilen auslassen bis diese 4 Seiten voll wären.Anfangen zu drucken (DrawString) würdest Du erst bei Seite 5
und am Ende mit HasMorePages aus der Seite zurückkehren.Gruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 24. Juli 2012 07:05
Alle Antworten
-
Hallo,
zuerst: die Arbeit kann Dir das PrintDocument nicht abnehmen, da es nicht weiß, was überhaupt gedruckt wird.
Um die nicht gewünschten Seiten zu überspringen darfst Du diese nicht ausgeben,
sondern musst die Bereiche auslassen. Wobei man dabei trotzdem errechnen muss,
welches Element auf die (hier vier) auszulassenen Seiten käme.
Wie das auszusehen hat, hängt von dem Inhalt selbst ab.
Für Zeichenketten kann man z. B. zuvor mit MeasureString den Platzbedarf ermitteln.
Und solange die Zeilen auslassen bis diese 4 Seiten voll wären.Anfangen zu drucken (DrawString) würdest Du erst bei Seite 5
und am Ende mit HasMorePages aus der Seite zurückkehren.Gruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 24. Juli 2012 07:05
-
Hallo rs1305,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.