读取.xps文件,为什么一些文本一起运行?

时间:2014-05-13 05:11:31

标签: c# xps

鉴于此处有关于.xps文件的其他问题,我找到了Microsoft的库。我的第一次尝试是从文件中读出文本,但它不对 - 文本片段不对应。

考虑我之后的第一行:

Windows 7中的XPS查看器正确显示为9列:

1
1
B24
24
x
35 1/4
x 
24
U-U

但是,文件中的项目(格式化显示):

144,169.12 = B24
50.56,169.12 = 1U-U
110.24,169.12 = 12424
356.64,169.12 = x35 1/4x

Field#1最后加了#9。 #2,#4和#8合并为#3。 #5,#6和#7合并为#4。 (是的,你不能告诉1分。从我可以看到的其他方面。)每一行都以完全相同的方式被破坏。

项目#2和#4无论如何都可以解析,但#3是不明确的。

产生此代码的代码的相关部分:

while (ContentReader.Read())
    if (ContentReader.Name == "Glyphs")
        if (ContentReader.HasAttributes)
        {
            String Text = ContentReader.GetAttribute("UnicodeString");
            String XText = ContentReader.GetAttribute("OriginX");
            String YText = ContentReader.GetAttribute("OriginY");
            Contents += XText + ", " + YText + " = " + Text + Environment.NewLine;
        }

我如何实际获得所有9个字段?他们为什么要合并,甚至没有合并?

编辑:我从.xps文件中提取原始文件。我得到的正是文件中的内容。我得到的唯一暗示是,那里有一个领域,指数对那些没有被混淆的指数很简单,而且对那些已经混淆的指数很简单。我在考虑某种蓄意的混淆吗?

1 个答案:

答案 0 :(得分:0)

我正在处理类似的情况。
我目前正在尝试改进的解决方案是:

String Indices = ContentReader.GetAttribute("Indices");

此属性的详细信息包含字形的“高级宽度”信息,可在ECMA-388(OXPS标准)的12.1.3中找到

https://www.ecma-international.org/publications/standards/Ecma-388.htm