编辑 XPS 内容
Edit XPS content
我有一个应用程序可以将格式化文档发送到带有一些条形码的打印机。
我已经制作了其他与打印机一起工作的应用程序,并通过发送一个 xps 文件直接通过打印服务器打印,所以我想我会尝试看看我是否可以制作一个 .xps 文件,更改文本并完成有了它,但是我在网上找到的每篇文章都与创建 xps 文件有关,而不是更改它们。我觉得这应该是可能的,如果不必诉诸在服务器上安装 Office 并通过那里进行打印,那就太好了。那么我不妨使用 Open XML 和一个 .docx 文件。
这很简单。假设我想将 .xps 文件中的文本 INCNUMMER 更改为“testing123”。我该怎么做?
我已经尝试了整个解压缩,打开 xml,找到文本,编辑,重新压缩,但我担心 .xps 格式有太多我不明白的地方,无法完成这项工作。
此致,卡斯帕。
如您所知,XPS 文件只是一个 ZIP 存档,其中包含许多具有特定名称和定义结构的文件和文件夹。
在根级别有一个 Documents
文件夹,通常只包含一个名为 1
的文档文件夹。里面是一个 Pages
文件夹,其中包含一个或多个 .fpage
文件:这些文件定义了文档中每一页的内容。
Documents
1
Pages
1.fpage
2.fpage
etc
如果您在文本编辑器中打开这些 .fpage
个文件,您将看到它们只是 XML 个文件。每个页面通常由包含多个 <Path>
和 <Glyphs>
元素的 <Canvas>
元素表示(文本由后者表示)。但是,即使 <Glyphs>
元素确实具有 UnicodeString
属性,该属性的值也不能单独更改。
每个 <Glyphs>
元素还有一个 Indices
属性。如果您完全删除此属性并同时更改 UnicodeString
属性,则此 almost 有效。但是,您可能会发现,在 XPS 查看器应用程序中查看文件时,文本中的某些字符会被问号符号替换。
XPS 文件中嵌入了字体字形(Resources
文件夹中的 odttf
个文件),生成 XPS 文件的软件只会嵌入源文档中使用的字形。例如,这意味着(对于给定的字体)如果您没有在源文档中使用字母 "A",那么该字母的字形将不会写入 XPS 文件的资源。因此,如果您将 UnicodeString
属性更改为包含字母 "A",那么该字符将在查看器中显示为问号,因为它没有字形资源来告诉它必须如何绘制该字符。
如果您可以控制源文档(后来转换为 XPS 的文档),那么我想您可以包含一段包含您可能使用的所有字符的文本,并将其颜色设置为白色,这样它就不会打印,但我不确定 XPS 打印机驱动程序是否会删除该文本。如果它 没有 那么你可能会这样做:
- 打开相关的
.fpage
XML文件
- 搜索
<Glyphs>
元素的所有 UnicodeString
属性以查找您想要的文本
- 用其他内容替换该文本
- 从已更改的
<Glyphs>
元素中删除 Indices
属性
- 将更新的XML保存回文件
- 重新压缩然后将扩展名从 ZIP 更改为 XPS
我有一个应用程序可以将格式化文档发送到带有一些条形码的打印机。
我已经制作了其他与打印机一起工作的应用程序,并通过发送一个 xps 文件直接通过打印服务器打印,所以我想我会尝试看看我是否可以制作一个 .xps 文件,更改文本并完成有了它,但是我在网上找到的每篇文章都与创建 xps 文件有关,而不是更改它们。我觉得这应该是可能的,如果不必诉诸在服务器上安装 Office 并通过那里进行打印,那就太好了。那么我不妨使用 Open XML 和一个 .docx 文件。
我已经尝试了整个解压缩,打开 xml,找到文本,编辑,重新压缩,但我担心 .xps 格式有太多我不明白的地方,无法完成这项工作。
此致,卡斯帕。
如您所知,XPS 文件只是一个 ZIP 存档,其中包含许多具有特定名称和定义结构的文件和文件夹。
在根级别有一个 Documents
文件夹,通常只包含一个名为 1
的文档文件夹。里面是一个 Pages
文件夹,其中包含一个或多个 .fpage
文件:这些文件定义了文档中每一页的内容。
Documents
1
Pages
1.fpage
2.fpage
etc
如果您在文本编辑器中打开这些 .fpage
个文件,您将看到它们只是 XML 个文件。每个页面通常由包含多个 <Path>
和 <Glyphs>
元素的 <Canvas>
元素表示(文本由后者表示)。但是,即使 <Glyphs>
元素确实具有 UnicodeString
属性,该属性的值也不能单独更改。
每个 <Glyphs>
元素还有一个 Indices
属性。如果您完全删除此属性并同时更改 UnicodeString
属性,则此 almost 有效。但是,您可能会发现,在 XPS 查看器应用程序中查看文件时,文本中的某些字符会被问号符号替换。
XPS 文件中嵌入了字体字形(Resources
文件夹中的 odttf
个文件),生成 XPS 文件的软件只会嵌入源文档中使用的字形。例如,这意味着(对于给定的字体)如果您没有在源文档中使用字母 "A",那么该字母的字形将不会写入 XPS 文件的资源。因此,如果您将 UnicodeString
属性更改为包含字母 "A",那么该字符将在查看器中显示为问号,因为它没有字形资源来告诉它必须如何绘制该字符。
如果您可以控制源文档(后来转换为 XPS 的文档),那么我想您可以包含一段包含您可能使用的所有字符的文本,并将其颜色设置为白色,这样它就不会打印,但我不确定 XPS 打印机驱动程序是否会删除该文本。如果它 没有 那么你可能会这样做:
- 打开相关的
.fpage
XML文件 - 搜索
<Glyphs>
元素的所有UnicodeString
属性以查找您想要的文本 - 用其他内容替换该文本
- 从已更改的
<Glyphs>
元素中删除Indices
属性 - 将更新的XML保存回文件
- 重新压缩然后将扩展名从 ZIP 更改为 XPS