Używanie kontrolki WpF DocumentViewer Nie mogę określić, jak ustawić PageOrientation w PrintDialog, który wyświetla się w oknie DocumentViewer, gdy użytkownik kliknie przycisk drukowania. Czy istnieje sposób, aby się w to wciągnąć?Ustawienie właściwości strony dla Document Viewer Wpf PrintDialog
Odpowiedz
Obejściem, które ustawiłem w oknie dialogowym drukowania w aplikacji DocumentViewer było ukrycie przycisku drukowania w kontrolce DocumentViewer poprzez pominięcie przycisku z szablonu. Potem pod warunkiem mój własny przycisk drukowania i związał go z następującym kodem:
public bool Print()
{
PrintDialog dialog = new PrintDialog();
dialog.PrintQueue = LocalPrintServer.GetDefaultPrintQueue();
dialog.PrintTicket = dialog.PrintQueue.DefaultPrintTicket;
dialog.PrintTicket.PageOrientation = PageOrientation.Landscape;
if (dialog.ShowDialog() == true)
{
XpsDocumentWriter writer = PrintQueue.CreateXpsDocumentWriter(dialog.PrintQueue);
writer.WriteAsync(_DocumentViewer.Document as FixedDocument, dialog.PrintTicket);
return true;
}
return false;
}
Mike's answer prace. Sposób, w jaki zdecydowałem się go wdrożyć, polegał na tym, że zamiast tego utworzyłem swoją własną przeglądarkę dokumentów, pochodzącą z DocumentViewer. Ponadto nie działała mi funkcja Cast do właściwości FixedDocument - przesyłanie do FixedDocumentSequence było.
GetDesiredPageOrientation to wszystko, czego potrzebujesz. W moim przypadku sprawdzam wymiary pierwszej strony, ponieważ generuję dokumenty o jednolitym rozmiarze i orientacji dla wszystkich stron w dokumencie oraz z tylko jednym dokumentem w sekwencji.
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Controls;
using System.Windows.Xps;
using System.Printing;
using System.Windows.Documents;
public class MyDocumentViewer : DocumentViewer
{
protected override void OnPrintCommand()
{
// get a print dialog, defaulted to default printer and default printer's preferences.
PrintDialog printDialog = new PrintDialog();
printDialog.PrintQueue = LocalPrintServer.GetDefaultPrintQueue();
printDialog.PrintTicket = printDialog.PrintQueue.DefaultPrintTicket;
// get a reference to the FixedDocumentSequence for the viewer.
FixedDocumentSequence docSeq = this.Document as FixedDocumentSequence;
// set the default page orientation based on the desired output.
printDialog.PrintTicket.PageOrientation = GetDesiredPageOrientation(docSeq);
if (printDialog.ShowDialog() == true)
{
// set the print ticket for the document sequence and write it to the printer.
docSeq.PrintTicket = printDialog.PrintTicket;
XpsDocumentWriter writer = PrintQueue.CreateXpsDocumentWriter(printDialog.PrintQueue);
writer.WriteAsync(docSeq, printDialog.PrintTicket);
}
}
}
- 1. Program Document Viewer WPF nie zwalnia pliku XPS
- 2. Dostosuj okno PrintDialog w WPF
- 3. Konwersja WPF (XAML) Sterowanie do XPS Document
- 4. Ustawienie jednego favicon dla całej strony
- 5. Drukowanie WPF - ustaw drukarkę w trybie automatycznym na drukarce WPF PrintDialog
- 6. javascript: ustawienie właściwości obiektu
- 7. Ustawienie strony Wide Cookie
- 8. Ustawienie "AcceptButton" z WPF WindowsFormHost
- 9. Alternatywa dla funkcji "$ (document) .ready"
- 10. PDF Viewer iPad App
- 11. WPF: Określ domyślne ustawienie wiązania
- 12. narzędzie Viewer for Global Assembly Cache (Viewer)
- 13. Ustawienie jednej strony NSSplitView programowo
- 14. Równoważnik WPF właściwości AccesibleName
- 15. WPF: Jak programowo wyodrębnić pasek przewijania z programu Scroll Viewer?
- 16. Crystal Reports Viewer nie przejdzie obok strony 2
- 17. Ustawienie domyślnego rozmiaru strony dla obiektu JPA Pageable Obiekt
- 18. PrintDialog ze stronami Landscape i Portrait
- 19. WPF Jak oceniać ścieżkę właściwości?
- 20. Jak .Na pracuje $ (document)
- 21. ustawienie właściwości wyświetlania w kodzie za
- 22. Smart-table - Ustawienie strony z kodem
- 23. Ustawienie meta: resourcekey na ładowanie strony
- 24. ASp.net MVC z Report Viewer?
- 25. Modyfikowanie ustawień drukarki po wyświetleniu komunikatu PrintDialog
- 26. Zestaw programu Jasper Viewer
- 27. WPF: powiązanie, ustawianie właściwości warunkowej
- 28. Kodowanie standardu Microsoft Document
- 29. Dlaczego PrintDialog nie wyświetla się (w 64-bitowym)?
- 30. C#/WPF: PropertyChanged dla wszystkich właściwości w ViewModel?
Miałem już zastąpiony domyślny DocumentViewer, ponieważ zawiera tekst, który nie jest przyjazny dla l18n, więc okazało się to świetnym rozwiązaniem. Dzięki! – JoeB
Czy powinien to być printDialog.PrintTicket = printDialog.PrintQueue.DefaultPrintTicket ;? Nie kompiluje się inaczej –
Byłoby miło zobaczyć twoją implementację GetDesiredPageOrientation! –