Ich setze gerade ein C#-Projekt fort, das von einem Kollegen begonnen wurde, und frage mich, ob für dieses Problem wirklich mein Kollege verantwortlich ist oder ob ein Fehler in der Klasse PrintDialog vorliegt.
Wir erzeugen ein Dokument, das zuerst auf dem Bildschirm angezeigt wird und dann auf Wunsch des Benutzers ausgedruckt werden kann. Das Problem besteht darin, dass das Hintergrundbild zwar auf dem Bildschirm angezeigt wird und auch ausgedruckt wird, wenn man im Druck-Dialog "Alle Seiten drucken" auswählt, aber nicht, wenn man nur eine einzelne Seite oder eine begrenzte Anzahl Seiten ausdruckt. Mich würde interessieren, ob ihr bestätigen könnt, dass hier ein Fehler in der Klasse PrintDialog vorliegt.
So wird das Dokument angelegt:
[COLOR=blue]var[/COLOR] pageContent = [COLOR=blue]new[/COLOR][COLOR=#2b91af] PageContent[/COLOR]();
...
[COLOR=blue]var[/COLOR] fixedPage = [COLOR=blue]new [/COLOR][COLOR=#2b91af]FixedPage[/COLOR]();
fixedPage.Background = [COLOR=blue]new[/COLOR][COLOR=#2b91af] ImageBrush[/COLOR]([COLOR=blue]new[/COLOR][COLOR=#2b91af]BitmapImage[/COLOR]([COLOR=blue]new[/COLOR][COLOR=#2b91af]Uri[/COLOR]([COLOR=#a31515] ... [/COLOR])));
...
(([COLOR=#2b91af]IAddChild[/COLOR])pageContent).AddChild(fixedPage);
[COLOR=blue]this[/COLOR].document.Pages.Add(pageContent);
Alles anzeigen
So wird PrintDialog aufgerufen:
[COLOR=blue]var[/COLOR] vm = ([COLOR=#2b91af]DocumentPreviewViewModel[/COLOR])[COLOR=blue]this[/COLOR].DataContext;
[COLOR=blue]var[/COLOR] dlg = [COLOR=blue]new[/COLOR][COLOR=#2b91af] PrintDialog[/COLOR]();[COLOR=blue]
var[/COLOR] paginator = vm.Document.DocumentPaginator;[COLOR=blue]
if[/COLOR] (dlg.PageRangeSelection == [COLOR=#2b91af]PageRangeSelection[/COLOR].UserPages)
paginator = [COLOR=blue]new[/COLOR] [COLOR=#2b91af]PageRangeDocumentPaginator[/COLOR](vm.Document.DocumentPaginator, dlg.PageRange);
dlg.PrintDocument(paginator, [COLOR=#a31515]"print job"[/COLOR]);
Oder ist vieleicht der PageRangeDocumentPaginator fehlerhaft?