如何使用aspose c#从word文件中查找书签的位置

问题描述 投票:0回答:1

我正在使用 c# 中的 aspose,我想知道书签的 x 和 y,以便我可以手动放置一些内容。

我已经尝试过这段代码 `LayoutCollectorlayoutCollector = new LayoutCollector(文档);

LayoutEnumeratorlayoutEnumerator = new LayoutEnumerator(document);

//签名书签开始 BookmarkStart 签名BookmarkStart = document.Range.Bookmarks["signImage1"].BookmarkStart;

var renderObject =layoutCollector.GetEntity(signatureBookmarkStart);

layoutEnumerator.Current = renderObject;

矩形F位置=layoutEnumerator.矩形;` 但它给出了错误的位置。

c# ms-word aspose
1个回答
0
投票

首先请注意,MS Word 文档本质上是流动的,因此文档本身没有布局信息。消费者应用程序(例如 MS Word 或 OpenOffice)将文档内容动态重排到页面中。 Aspose.Words 有自己的文档布局引擎。

要确定书签或其他节点的坐标,需要构建文档布局。为了构建准确的文档布局,文档中使用的字体应该在处理文档的环境中可用。如果 Aspose.Words 找不到文档中使用的字体,将替换该字体。由于不同的字体规格,这可能会导致字体不匹配和文档布局差异,从而导致

LayoutEnumerator
返回不正确的节点坐标。您可以实现 IWarningCallback 以在执行字体替换时获取通知。 默认情况下,Aspose.Words 使用环境中安装的字体,但可以显式指定 Aspose.Words 查找字体的位置

此外,在评估模式下,Aspose.Words 在文档顶部注入评估消息,这可能会移动文档内容,因此

LayoutEnumerator
检测到的坐标也会发生移动。

如果上述内容没有帮助,请将问题发布到 Aspose.Words 支持论坛 并附上有问题的文档。

© www.soinside.com 2019 - 2024. All rights reserved.