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

2024-03-11

我有一个简单的 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();
            }
        }

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

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

在下面的代码行中:

FixedDocumentSequence sequence = xps.GetFixedDocumentSequence();

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


即使我在作为 Windows 应用程序运行时也遇到了同样的问题。

解决方案是:

调用线程必须处于 STA 模式。 Visual Studio 创建的大多数项目默认设置为 MTA。

您可以做的是在 STA 线程内运行代码。

我尝试过:视觉工作室 2010, Windows XP Srv Pack 3 64 位, 和.Net Framework 4.0

祝你好运...

如果它解决了您的问题,请接受它作为答案

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是 XPS 文件以及如何使用它 的相关文章

随机推荐

  • htaccess 将除一页之外的所有页面从 html 重定向到 php

    我的网站设置为 htaccess 将所有页面从 html 定向到 php 如下所示 RewriteEngine On RewriteBase RewriteCond HTTP HOST website com RewriteRule htt
  • 当 iPad 处于纵向方向时缩小 Mobile Safari 视口宽度?-

    我正在开发一个网站 该网站设计为在 iPad 上以横向模式查看时效果最佳 一切都是 1024px 宽 div 容器 然而 我仍然需要缩小视口 这样当用户将 iPad 转为纵向时 用户不必缩小或水平滚动来查看页面上的所有内容 目前我有这个标签
  • 正则表达式匹配任何包含特定字母或更多字母的单词?

    我需要一个正则表达式来匹配任何包含字母的单词 m a h d以任何顺序在一起 所以 Mohamed Hamada and Mahmoud匹配 但是hammer不匹配 我尝试执行以下操作 我是正则表达式的新手 Regex reg new Re
  • 索引和长度必须引用字符串内的位置?

    我想获取前 50 个字母 所以我使用了subString函数来获取它 如您所见 我使用以下代码来获取它 但不幸的是它不起作用并且出现错误消息 索引和长度必须引用字符串中的位置 那么还有其他方法可以修复吗 因为用户是控制数据输入的人 有时他会
  • float 到 long 转换时出错[重复]

    这个问题在这里已经有答案了 我猜这是由于浮点和准确性造成的 但我只是想检查一下以确保没有遗漏任何其他内容 我有一个 1007 62 的浮点数 存储在 info Amount 中 该浮点数乘以 100 并转换为 long 此时我得到的值为 1
  • 集合类型属性的设置器

    集合类型属性是否需要设置器 Type 1 class Company private IList
  • uWSGI、Flask、sqlalchemy 和 postgres:SSL 错误:解密失败或坏记录 mac

    我正在尝试使用 uWSGI Nginx 设置一个应用程序网络服务器 它使用 SQLAlchemy 运行 Flask 应用程序来与 Postgres 数据库进行通信 当我向网络服务器发出请求时 所有其他响应都将是 500 错误 错误是 Tra
  • Java日期更改格式[重复]

    这个问题在这里已经有答案了 我正在尝试更改格式Date对象 我尝试这样做 for Date date dates DateFormat formatter new SimpleDateFormat yyyy MM dd String for
  • 将 Python 枚举编码为 JSON

    我有一本字典 其中一些键是 Enum 实例 enum Enum 的子类 我正在尝试使用自定义 JSON 编码器类将字典编码为 JSON 字符串 如下所示文档 https docs python org 3 library json html
  • 创建卷的 Docker 容器后,本地主机上的权限更改为 1000

    我的容器使用外部卷创建后 权限变为1000 drwxr x 71000 10004096 三月 02 01 13 my domain 每次我需要更改它我的用户 AS docker 由 root 用户安装 我怎样才能避免这种情况 有人可以写点
  • 将 Jython 与 Maven 结合使用

    我有一个 Maven 模块 它依赖于我通过 jython 代码访问的各种其他 Maven 依赖项 我现在已经完成了 我想将项目编译为 jar 或者甚至只是运行它而不编译 但我不知道从哪里开始 有谁知道如何运行一些 py 文件来访问其他包中的
  • MYSQL - 使用 while 循环更新

    declare c int set c 1 while c lt 700 do update users set profile display name concat substring first name 1 1 last name
  • .NET Core 更新迁移正在尝试再次重新创建表

    我首先正在开发 net core 3 项目代码 在此步骤中 我在表中添加了 2 列 然后我通过此代码 CLI 对解决方案进行了迁移添加 dotnet ef startup project MyApi Api migrations add a
  • mysql.service 丢失但显示在列表中 - 安装失败

    我使用的是 Ubuntu 17 04 长话短说 在与 MariaDB 进行了一些斗争之后 我遵循了一些关于如何完全地从我的家庭服务器中删除 MySQL 和 MariaDB 现在我无法重新安装mysql server 当我尝试时出现此错误 F
  • 非 ANSI 文件的 TStringList 行为

    在我的应用程序中 当我想要导入文件时 我使用 TStringList 但是 当有人从Excel导出数据时 文件编码是UCS 2 Little Endian TStringList无法读取数据 有什么方法可以验证这种情况 识别文本编码并向用户
  • Mod_wsgi工作进程分段错误(11)

    我的 django 应用程序有问题 该应用程序由 apache mod wsgi 托管 我在应用程序中添加了一些 matplotlib 代码 apache 工作进程现在崩溃了 我将这个问题简化为以下内容 没有任何 matplotlib 导入
  • 添加模型到集合后自动保存

    我有一个收藏myCollection我向其中添加模型如下 myCollection add title Romeo and Juliette author Shakespear 我现在可以将这个添加的模型保存到服务器吗 骨干Collecti
  • 找不到方法:'Void Google.Apis.Util.Store.FileDataStore..ctor(System.String)'

    我已经被困在这个问题上好几天了 我从 google api 示例中复制了确切的代码以将文件上传到 Google Drive 这是代码 UserCredential credential GoogleWebAuthorizationBroke
  • Spark失败:引起:org.apache.spark.shuffle.FetchFailedException:框架太大:5454002341

    我正在为确定父子项的表生成层次结构 以下是使用的配置 即使在收到有关太大框架的错误后也是如此 火花特性 conf spark yarn executor memoryOverhead 1024mb conf yarn nodemanager
  • 什么是 XPS 文件以及如何使用它

    我有一个简单的 C net Web 应用程序 我正在使用 XPS 文件 我使用了以下代码 private void button1 Click object sender EventArgs e try string xpsFile D C