質問

私は、WPFコントロールからXPSドキュメントを生成するためにしようとしています。印刷はこれまでに動作しますが、私は風景モードでXPSを作成する方法を見つけることができません。

主に別のSOページ

から取られたXPSファイルを作成するには、

私のコード、

    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();
        }
    }

すべてのヘルプは高く評価されます。

役に立ちましたか?

解決

ReturnFixedDocであなたのFixedPageのサイズを設定してみてください

// hard coded for A4
fixedPage.Width = 11.69 * 96;
fixedPage.Height = 8.27 * 96;

の数字は、フォーム(インチ)×(インチあたりのドット数)です。 96は、WPFのDPIです。私は、A4ページの寸法を使用しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top