Utilisation du contrôle Wpf DocumentViewer Je n'arrive pas à déterminer comment définir la PageOrientation sur le PrintDialog que DocumentViewer affiche lorsque l'utilisateur clique sur le bouton d'impression. Y a-t-il un moyen de s'accrocher à cela?Définition de l'option PageOrientation pour Wpf DocumentViewer PrintDialog
Répondre
La solution de contournement que j'ai utilisée pour définir l'orientation de la boîte de dialogue d'impression de DocumentViewer consistait à masquer le bouton d'impression sur le contrôle DocumentViewer en omettant le bouton du modèle. Je me suis alors fourni mon propre bouton d'impression et l'attacha au code suivant:
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 œuvres. La façon dont j'ai choisi de l'implémenter était de créer à la place mon propre visualisateur de document dérivé de DocumentViewer. En outre, la conversion de la propriété Document en FixedDocument ne fonctionnait pas pour moi - la conversion en FixedDocumentSequence l'était.
GetDesiredPageOrientation est ce dont vous avez besoin. Dans mon cas, j'inspecte les dimensions de la première page, car je génère des documents de taille et d'orientation uniformes pour toutes les pages du document et avec un seul document dans la séquence.
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. wpf documentviewer pour afficher les différents formats de fichiers?
- 2. Documents WPF DocumentViewer Find-function et FixedPage
- 3. WPF DocumentViewer ne libère pas le fichier XPS
- 4. C# personnalisée PrintDialog PInvoke DevMode Question
- 5. Désactivation de la sélection de texte dans DocumentViewer
- 6. WPF DataGrid - Définition de RowDetails par programme
- 7. Définition de l'ordre des onglets dans WPF
- 8. Échelle de FlowFocument WPF pour s'adapter Page
- 9. Comment faire pour que DocumentViewer de WPF libère son verrou de fichier sur le document XPS source?
- 10. WPF GridView avec une définition dynamique
- 11. Barre d'outils DocumentViewer et menu contextuel
- 12. Définition des ressources WPF en C#
- 13. Définition d'une propriété PlacementTarget de WPF ContextMenu dans XAML?
- 14. Comment définir le nom du travail d'impression lors de l'utilisation du contrôle DocumentViewer?
- 15. Impression d'une collection dans WPF
- 16. WPF/XAML/C# Définition d'une variable booléenne sur MouseOver
- 17. WPF Liaison à la propriété et définition d'une autre
- 18. Définition de valeurs SPField pour SPListItem
- 19. XSD Définition pour énumératif Valeur
- 20. Définition du focus pour un élément Windows Forms hébergé dans WPF
- 21. Définition d'un contrôle WPF à développer pour remplir l'espace disponible, et pas plus
- 22. Impression d'un FlowFocument WPF
- 23. Problème de virtualisation Wpf Datagrid lors de la définition des couleurs de cellule
- 24. Définition de rôles personnalisés
- 25. Définition de gc.refLogExpire
- 26. Définition d'une classe css pour TD
- 27. Définition d'associations MIME pour MS Works
- 28. Xcode: Définition de GCC_PREPROCESSOR_DEFINITIONS pour différentes configurations de construction?
- 29. Définition de la version de fichier pour un fichier codeDOM
- 30. Définition de la propriété pour le format de pourcentage ASP.Net
J'avais déjà remplacé le DocumentViewer par défaut parce qu'il contenait du texte non-l18n-friendly, ce qui s'est avéré être une excellente solution. Merci! – JoeB
Devrait-il être printDialog.PrintTicket = printDialog.PrintQueue.DefaultPrintTicket ;? Ne compile pas autrement –
Serait également agréable de voir votre implémentation de GetDesiredPageOrientation! –