2009-02-03 19 views
1

Existe-t-il un moyen de définir l'orientation de mise en page par défaut lors de l'impression de fichiers XPS à l'aide de WPF XPS Viewer?Orientation par défaut lors de l'impression de fichiers XPS à l'aide de WPF XPS Viewer

Mon document fixe XPS a son orientation de page définie sur Paysage, la taille de support de page a une largeur supérieure à sa hauteur et s'affiche correctement dans la visionneuse en tant que paysage. C'est juste que lorsque vous cliquez sur le bouton d'impression, les préférences de la boîte de dialogue Imprimer sont définies par défaut sur Portrait et sont imprimées en tant que telles. Je préférerais ne pas avoir à modifier les paramètres d'impression par défaut de l'utilisateur Je préférerais de loin que le XPS Viewer imprime le XPS tel qu'il a été conçu pour être imprimé.

+0

I [répondu] (http: // stackoverflow.com/questions/1003585/setting-pageorientation-pour-le-wpf-documentviewer-printdialog/2066536 # 2066536) this [question connexe] (http://stackoverflow.com/questions/1003585/setting-pageorientation-for-the- wpf-documentviewer-printdialog/2066536), espérons que cela peut aider? – mcw0933

Répondre

0

Remplissez le champ du PrintTicket:

PrintDialog pd = new PrintDialog(); 
    PrintTicket pt = new PrintTicket(); 
    pt.PageOrientation = PageOrientation.Landscape; 
    pd.PrintTicket = pd.PrintQueue.MergeAndValidatePrintTicket(pd.PrintQueue.DefaultPrintTicket, pt).ValidatedPrintTicket; 
    if (pd.ShowDialog() == true) 
    { 
    ... 
    } 
-1

Ce n'est pas vraiment un problème avec MXDW mais avec la façon dont les pilotes fonctionnent sous Windows. Le (s) choix de l'utilisateur est (sont) enregistré (s) pour une session particulière. Cela signifie que vous pouvez réutiliser les paramètres d'impression initiale lors de l'impression entre la première impression et la fermeture de l'application. La plupart des imprimantes se comportent de cette façon, à moins que l'on ne trouve un moyen de sauvegarder ces informations quelque part et de permettre à l'utilisateur de les réutiliser d'une session à l'autre. Donc, j'ai essayé de pirater le fichier GPD (où les informations d'impression pour une imprimante sont généralement stockées). L'orientation a deux valeurs possibles: PORTRAIT et LANDSCAPE_CC270 avec la valeur par défaut étant PORTRAIT. Voir ci-dessous:

*% ***************************************** *% ****** Orientation ********************************************** ********************** * Fonction: Orientation { * rcNameID: = ORIENTATION_DISPLAY * DefaultOption:

PORTRAIT
*Option: PORTRAIT 
{ 
    *rcNameID: =PORTRAIT_DISPLAY 
} 

*Option: LANDSCAPE_CC270 
{ 
    *rcNameID: =LANDSCAPE_DISPLAY 
} 

}

Maintenant, si je devais changer la valeur par défaut de LANDSCAPE_CC270, t Les préférences d'impression s'arrêtent (et toute impression échouera). En fait, il semble que la spécification d'une autre valeur conserve la valeur par défaut de PORTRAIT. Sûrement, MS est en faisant une sorte de vérification pour nous empêcher de pirater ce pilote. On dirait que MS ne souhaite à personne de falsifier ses paramètres :(

Mais vous pouvez essayer de flirter avec les valeurs GPD un peu plus et voir si quelque chose de votre goût arrive. Gardera le piratage un peu plus.

caveat:.! fichiers GPD ne doivent pas être falsifiées si vous ne savez pas ce que vous faites si vous voulez toujours aller faire une sauvegarde avant

Astuce:. Ils sont stockés dans le dossier %WINDOWS%system32\spool\drivers\w32x86\3

0

Je crois que la bonne façon de le faire lors de la création d'un Fixe dDocument, définit RenderTransform = RotateTransform (90) sur le contenu de la page lorsque les dimensions sont supérieures à la largeur. Exemple:

var visualContent = new Image 
      { 
       Source = image, 
       Stretch = Stretch.Uniform 
      }; 
visualContent.RenderTransformOrigin = new Point(0.5, 0.5);  
visualContent.RenderTransform = new RotateTransform(90); 
FixedPage fixedPage = new FixedPage(); 
fixedPage.Children.Add(visualContent); 
var pageContent = new PageContent 
{ 
    Child = fixedPage 
}; 

Je ne sais pas si cela aide un document XPS préexistant cependant.