none
PrintDocument mit FromPage / ToPage RRS feed

  • 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.

    Dienstag, 10. Juli 2012 14:41

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

    Dienstag, 10. Juli 2012 15:03
    Beantworter

Alle Antworten