你好,通过Aspose.Words(24.2.0)打开一个wps2019创建的文件,什么操作都不做,直接另存为新的word文件,段落间距会发生变化。
原文件:
Wps2019Create.docx (12.3 KB)
原文件效果:
另存文件:
Wps2019Create.docx_20240226030800.docx (22.0 KB)
另存后效果:
代码:
var fileName = "Formular.docx";
fileName = "Wps2019Create.docx";
var inFilePath = Path.Combine(baseDirectory, fileName);
var document = new Document(inFilePath);
var outDocFilePath = Path.Combine(baseDirectory, fileName + "_" + DateTime.UtcNow.ToString("yyyyMMddHHmmss") + ".docx");
document.Save(outDocFilePath);
@cqhg90258 我看不出 MS Word 中的输入和输出文档有任何区别。 另外,我检查了文档的内部表示,它们也是相同的。
前:
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:hint="default"/>
<w:lang w:val="en-US"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:hint="default"/>
<w:lang w:val="en-US"/>
</w:rPr>
<w:t>说是有一个叫做 Hobbes OS/2 Archive 的网站,即将在 2024 年 4 月份正式关闭,而且这事儿还是由新墨西哥州立大学宣布的。</w:t>
</w:r>
</w:p>
后:
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:hint="default" />
<w:lang w:val="en-US" />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:hint="default" />
<w:lang w:val="en-US" />
</w:rPr>
<w:t>说是有一个叫做 Hobbes OS/2 Archive 的网站,即将在 2024 年 4 月份正式关闭,而且这事儿还是由新墨西哥州立大学宣布的。</w:t>
</w:r>
</w:p>
正常样式也是一样的:
前:
<w:style w:type="paragraph" w:default="1" w:styleId="1">
<w:name w:val="Normal"/>
<w:qFormat/>
<w:uiPriority w:val="0"/>
<w:pPr>
<w:widowControl w:val="0"/>
<w:jc w:val="both"/>
</w:pPr>
<w:rPr>
<w:rFonts w:asciiTheme="minorHAnsi" w:hAnsiTheme="minorHAnsi" w:eastAsiaTheme="minorEastAsia" w:cstheme="minorBidi"/>
<w:kern w:val="2"/>
<w:sz w:val="21"/>
<w:szCs w:val="24"/>
<w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/>
</w:rPr>
</w:style>
后:
<w:style w:type="paragraph" w:default="1" w:styleId="Normal">
<w:name w:val="Normal" />
<w:qFormat />
<w:pPr>
<w:widowControl w:val="0" />
<w:jc w:val="both" />
</w:pPr>
<w:rPr>
<w:rFonts w:asciiTheme="minorHAnsi" w:eastAsiaTheme="minorEastAsia" w:hAnsiTheme="minorHAnsi" w:cstheme="minorBidi" />
<w:kern w:val="2" />
<w:sz w:val="21" />
<w:szCs w:val="24" />
<w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA" />
</w:rPr>
</w:style>
原文件与Aspose.Word保存后的文件,段落的行间距是不一样,这种情况能不能通过设置Document对象相关参数在解决呢?
@cqhg90258 输入和输出文档在我这边看起来是一样的:
in.docx文件是Wps2019Create.docx的复制来的吗?能不能提供一下您的测试代码呢?
@cqhg90258 是的,“in.docx”是“Wps2019Create.docx”。 这是我的测试代码:
Document doc = new Document(@"C:\Temp\in.docx");
doc.Save(@"C:\Temp\out.docx");
我再试了下,还是有问题呢,会不会是因为我使用的是试用版呢,我把整个测试项目上传了,麻烦您再看一下呢
源码:
AsposeTest.7z (136.4 KB)
@cqhg90258 你的代码和我的一样。 您可以请求 30 天的临时许可证来测试 Aspose.Words,没有评估版本限制。 请参阅以下链接了解如何申请临时许可证:
https://purchase.aspose.com/temporary-license
@cqhg90258 出现此问题的原因是 Aspose.Words 默认使用英语作为默认编辑语言。 在您的情况下,您应该使用以下代码获得预期的输出:
Aspose.Words.Loading.LoadOptions opt = new Aspose.Words.Loading.LoadOptions();
opt.LanguagePreferences.DefaultEditingLanguage = Aspose.Words.Loading.EditingLanguage.ChinesePRC;
Document doc = new Document(@"C:\Temp\in.docx", opt);
doc.Save(@"C:\Temp\out.docx");
1 Like
设置LanguagePreferences.DefaultEditingLanguage = Aspose.Words.Loading.EditingLanguage.ChinesePRC;后样式正常了,非常感谢!!!
1 Like