我有一份word文档,使用office2016打开后title会显示[兼容]模式,一般需要手动切换为非兼容模式,正常使用。
如果通过aspose.word for .net 23.4.0.0 自动切换为非兼容模式
需要支持自动转换的功能,目前通过另存之类的方法都不可以
@zchong 例如,您可以使用 doc.getCompatibilityOptions().optimizeFor(MsWordVersion.WORD_2010);
来处理兼容性问题。 默认情况下,Aspose.Words 使用基于 MS Word 2019 显示的文档。
以下链接可能有用:
我的版本是aspose for .net ,刚查找无getCompatibilityOptions 方法,且链接也是java版本对应的,是否有其他方式。
@zchong 很抱歉提供了错误信息。 以下是 .NET 代码: doc.CompatibilityOptions.OptimizeFor(MsWordVersion.Word2010);`和链接CompatibilityOptions Class | Aspose.Words for .NET
当我不确定是否为兼容模式的文档时,如果采用这么方式是否存在隐藏问题。
我的诉求是需要检查文档里面的样式信息,兼容模式读取样式信息有时候是错误的,页码也是乱的,或者根本读取不到。
@zchong 不幸的是,没有文件,很难分析这个问题。作为一种变体,您可以尝试使用以下代码加载文档:
LoadOptions options = new LoadOptions();
options.LanguagePreferences.DefaultEditingLanguage = EditingLanguage.ChinesePRC;
Document doc = new Document("input.docx", options);
@zchong 此外,docx 文件中的 settings.xml 包含以下兼容文件信息:
<w:compatSetting w:name="compatibilityMode" w:uri="http://schemas.microsoft.com/office/word" w:val="14"/>
您可以检查该值,并在兼容性设置中选择最佳的 MS Word 版本。 如果没有帮助,可能是 Aspose.Words 中的问题。
@zchong 感谢您提供的文件。 我还以为是关于 Aspose.Words 的问题。
本文件有
<w:compatSetting w:name="compatibilityMode" w:uri="http://schemas.microsoft.com/office/word" w:val="14"/>
这意味着它最兼容 Word 2010。 2010 和 2019 或更高版本在显示内容方面有很大区别。 但如果表格行列位置相同,两个版本都会出现相同的蓝线。
我认为没有问题,只是MS Word版本之间的计算和显示内容不同。
@zchong 正如我在上一篇文章中所说,转换后不可能得到相同的结果。 您可以调整表格的大小,尝试得到相似的结果。 下面是我修改后的转换文档。 虽然看起来和之前的不一样,但已经尽可能相似了:
converted.docx (30.1 KB)
这串xml属性有没有示例代码可以直接读取呢,帮忙提供下吧
顺便帮忙看下有没有办法获取制作当前文档的版本号,是2010、2016还是什么。
为什么会出现这种兼容模式呢。
@zchong Aspose.Words 没有获取此参数的特定代码。 您可以尝试使用 DocumentFormat.OpenXml 库来获取该值,然后用它来定义一些选项:
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open("input.docx", false))
{
DocumentSettingsPart settingsPart = wordDoc.MainDocumentPart.DocumentSettingsPart;
Settings settings = settingsPart.Settings;
var compatibility = settings.GetFirstChild<Compatibility>();
var compatSetting = compatibility.GetFirstChild<CompatibilitySetting>();
if (compatSetting != null)
{
Console.WriteLine("Compatibility Mode Found:");
Console.WriteLine($"Name: {compatSetting.Name}");
Console.WriteLine($"Value: {compatSetting.Val}");
}
else
{
Console.WriteLine("Compatibility Mode setting not found.");
}
}
如果手动操作,需要将 .docx 改为 .zip,然后解压文件,在"{文件名}\word "文件夹中找到 settings.xml。