什么是XPS文件以及如何使用它们

Sud*_*dha 6 .net c# web-applications xps bmp

我有一个简单的C#.net Web应用程序.我正在使用XPS文件.我使用了以下代码

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string xpsFile = "D:\\Completed-Form.xps";
                xpsToBmp(xpsFile);
                MessageBox.Show("Done");
            }
            catch (Exception ex)
            {
                MessageBox.Show (ex.Message);
            }
        }

        static public void xpsToBmp(string xpsFile)
        {
            XpsDocument xps = new XpsDocument(xpsFile, System.IO.FileAccess.Read);
            FixedDocumentSequence sequence = xps.GetFixedDocumentSequence();

            for (int pageCount = 0; pageCount < sequence.DocumentPaginator.PageCount; ++pageCount)
            {
                DocumentPage page = sequence.DocumentPaginator.GetPage(pageCount);
                RenderTargetBitmap toBitmap = new RenderTargetBitmap((int)page.Size.Width,(int)page.Size.Height,96,96,System.Windows.Media.PixelFormats.Default);

                toBitmap.Render(page.Visual);

                BitmapEncoder bmpEncoder = new BmpBitmapEncoder();
                bmpEncoder.Frames.Add(BitmapFrame.Create(toBitmap));

                FileStream fStream = new FileStream("D:\\xpstobmp" + pageCount + ".bmp", FileMode.Create, FileAccess.Write);
                bmpEncoder.Save(fStream);
                fStream.Close();
            }
        }
Run Code Online (Sandbox Code Playgroud)

当我调试代码,错误显示为XamlParserException发生

'对与指定绑定约束匹配的类型'System.Windows.Documents.DocumentReference'的构造函数的调用引发了异常.行号"2"和行位置"20".

在以下代码行中:

FixedDocumentSequence sequence = xps.GetFixedDocumentSequence();
Run Code Online (Sandbox Code Playgroud)

我从http://msdn.microsoft.com/en-us/library/windows/hardware/gg463422.aspx下载了一个示例XPS文件(我从那里获得了160MB的zip文件.当我解压缩它时,有一些文件夹和扩展名为.xps的文件.我不知道如何使用这些文件)并在上面的代码中使用.我对这个文件概念很新.我不知道如何解决此错误以及如何使用.xps文件.我对位图文件知之甚少.

Gui*_*ite 1

您的代码可以正常工作,我刚刚在我的环境(VS 2010,Windows 7 64位)上进行了测试。

作为输入文件,我使用了用内置 Microsoft XPS Document Writer 打印的 google 页面。

所以问题出在您正在测试的 XPS 文档上。