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.

Était-ce utile?

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
scroll top