鉴于此处有关于.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文件中提取原始文件。我得到的正是文件中的内容。我得到的唯一暗示是,那里有一个领域,指数对那些没有被混淆的指数很简单,而且对那些已经混淆的指数很简单。我在考虑某种蓄意的混淆吗?
答案 0 :(得分:0)
我正在处理类似的情况。
我目前正在尝试改进的解决方案是:
String Indices = ContentReader.GetAttribute("Indices");
此属性的详细信息包含字形的“高级宽度”信息,可在ECMA-388(OXPS标准)的12.1.3中找到
https://www.ecma-international.org/publications/standards/Ecma-388.htm