WPF XPS en orientation paysage
-
21-09-2019 - |
Question
Je suis en train de pour générer un document XPS à partir d'un contrôle WPF. Imprimerie jusqu'à présent, mais je ne peux pas trouver un moyen de créer le XPS en mode paysage.
Mon code pour créer le fichier XPS, la plupart du temps pris d'une autre page SO
public FixedDocument ReturnFixedDoc()
{
FixedDocument fixedDoc = new FixedDocument();
PageContent pageContent = new PageContent();
FixedPage fixedPage = new FixedPage();
var ctrl = new controlToPrint();
//Create first page of document
fixedPage.Children.Add(ctrl);
((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
fixedDoc.Pages.Add(pageContent);
//Create any other required pages here
return fixedDoc;
}
public void SaveCurrentDocument()
{
// Configure save file dialog box
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "MyReport"; // Default file name
dlg.DefaultExt = ".xps"; // Default file extension
dlg.Filter = "XPS Documents (.xps)|*.xps"; // Filter files by extension
// Show save file dialog box
Nullable<bool> result = dlg.ShowDialog();
// Process save file dialog box results
if (result == true)
{
// Save document
string filename = dlg.FileName;
FixedDocument doc = ReturnFixedDoc();
XpsDocument xpsd = new XpsDocument(filename, FileAccess.Write);
System.Windows.Xps.XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd);
xw.Write(doc);
xpsd.Close();
}
}
Toute aide est appréciée.
La solution
Essayez de régler la taille de votre FixedPage dans ReturnFixedDoc:
// hard coded for A4
fixedPage.Width = 11.69 * 96;
fixedPage.Height = 8.27 * 96;
Les numéros sont sous la forme (pouces) x (points par pouce). 96 est le DPI de WPF. Je l'ai utilisé les dimensions d'une page A4.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow