首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编辑XPS含量

编辑XPS含量
EN

Stack Overflow用户
提问于 2015-01-27 07:42:19
回答 1查看 3K关注 0票数 0

我有一个应用程序,应该将格式化文档发送到带有一些条形码的打印机。

我制作了其他应用程序,通过发送xps文件直接通过打印机和打印服务器进行打印,所以我想我会尝试看看是否可以创建一个.xps文件,修改文本并完成它,但是我能在网上找到的每一篇文章都与创建和不更改xps文件有关。我觉得这应该是可能的,最好不用在服务器上安装Office并在服务器上打印。然后,我还可以使用Open和.docx文件。

这很简单。假设我想将.xps文件中的文本INCNUMMER更改为"testing123“。我该怎么做?

我已经尝试过整个解压缩、打开xml、查找文本、编辑、重新压缩,但恐怕.xps格式太多了,我无法理解它。

向你问好卡斯帕。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-30 12:47:42

正如您已经知道的,XPS文件只是一个ZIP归档文件,包含一些具有特定名称和定义结构的文件和文件夹。

在根级,有一个Documents文件夹,它通常只包含一个名为1的文档文件夹。里面是一个Pages文件夹,其中包含一个或多个.fpage文件:这些文件定义了文档中每个页面的内容。

代码语言:javascript
复制
Documents
    1
        Pages
            1.fpage
            2.fpage
            etc

如果在文本编辑器中打开这些.fpage文件,您将看到它们只是XML文件。每个页面通常由一个<Canvas>元素表示,该元素包含多个<Path><Glyphs>元素(文本由后者表示)。但是,即使<Glyphs>元素有一个UnicodeString属性,也不能孤立地更改该属性的值。

每个<Glyphs>元素还具有一个Indices属性。如果完全删除该属性并同时更改UnicodeString属性,则几乎可以做到这一点。但是,您可能会发现,在XPS应用程序中查看文件时,文本中的某些字符将被问号符号替换。

字体符号嵌入到XPS文件中(odttf文件在Resources文件夹中),生成Resources文件的软件只会嵌入源文档中使用的字体。例如,这意味着(对于给定的字体)如果您没有在源文档中使用字母"A“,那么该字母的字形将不会写入XPS文件的资源。因此,如果您将UnicodeString属性更改为包含一个字母"A“,则该字符将在查看器中显示为问号,因为它没有指示必须如何绘制该字符的字形资源。

如果您控制源文档(稍后转换为XPS的文档),那么我想您可以包括一段包含可能使用的所有字符的文本,并将其颜色设置为白色,这样它就不会打印,但我不确定XPS打印机驱动程序是否会删除该文本。如果没有,那么你很可能会做这样的事情:

  • 打开相关的.fpage XML文件
  • 搜索UnicodeString元素的所有<Glyphs>属性以找到您想要的文本
  • 用其他的东西代替这段文字
  • 从更改的Indices元素中删除<Glyphs>属性
  • 将更新的XML保存回文件
  • 然后,Re将扩展从ZIP更改为XPS。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28165478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档