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

这很简单。假设我想将.xps文件中的文本INCNUMMER更改为"testing123“。我该怎么做?
我已经尝试过整个解压缩、打开xml、查找文本、编辑、重新压缩,但恐怕.xps格式太多了,我无法理解它。
向你问好卡斯帕。
发布于 2015-01-30 12:47:42
正如您已经知道的,XPS文件只是一个ZIP归档文件,包含一些具有特定名称和定义结构的文件和文件夹。
在根级,有一个Documents文件夹,它通常只包含一个名为1的文档文件夹。里面是一个Pages文件夹,其中包含一个或多个.fpage文件:这些文件定义了文档中每个页面的内容。
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>属性https://stackoverflow.com/questions/28165478
复制相似问题