PrinDialog (WPF) und einzelne Seiten drucken

03/12/2009 - 16:57 von Julia M | Report spam
Hallo,

ich versuche gerade, meinem Drucker eine einzelne Seite eines
mehrseitigen Dokuments zu entlocken, aber gedruckt werden
grundsàtzlich alle Seiten.

Hier ein Minimal-Beispiel:

public partial class Window1 : Window
{
public Window1() { InitializeComponent(); }
private void Window_Loaded(object sender, RoutedEventArgs e)
{
PrintDialog dlg = new PrintDialog();
dlg.UserPageRangeEnabled = true;
dlg.ShowDialog();
dlg.PrintDocument(new TestPag(), "dingsbums");
}
}

public class TestPag : DocumentPaginator
{
public override DocumentPage GetPage(int pageNumber) { return
new DocumentPage(new Grid()); }
public override bool IsPageCountValid { get { return true; } }
public override int PageCount { get { return 10; } }
public override System.Windows.Size PageSize
{
get { throw new NotImplementedException(); }
set { throw new NotImplementedException(); }
}
public override IDocumentPaginatorSource Source { get { return
null; } }
}

Die Einstellungen, die man im Druckdialog vornimmt, finden zwar ihren
Weg in die entsprechenden Properties, aber PrintDocument kümmert sich
einen feuchten Kehrricht drum und jagt alle 10 Seiten raus :-(
Habe ich da etwas Wichtiges vergessen oder woran liegt das?

Danke

(Achja... ich benutze Framwork 3.5 SP1 auf XP Pro SP3)
 

Lesen sie die antworten

#1 Frank Dzaebel
04/12/2009 - 07:39 | Warnen spam
Hallo Julia,

ich versuche gerade, meinem Drucker eine einzelne Seite eines
mehrseitigen Dokuments zu entlocken, aber gedruckt werden
grundsàtzlich alle Seiten.



In Deinem PrintPage-Ereignis sollte ggf. die
Seiten-Auswahl auch behandelt werden. Etwa:

protected void MyPrintDocument_PrintPage (object sender,
PrintPageEventArgs ev)
{
PrintDocument pd = (PrintDocument)sender;
int fromPage = pd.PrinterSettings.FromPage;
int toPage = pd.PrinterSettings.ToPage;

// ... Logische Berechnung und Zeichnen anhand
// fromPage und toPage ...
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen