我正在使用 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.矩形;` 但它给出了错误的位置。
首先请注意,MS Word 文档本质上是流动的,因此文档本身没有布局信息。消费者应用程序(例如 MS Word 或 OpenOffice)将文档内容动态重排到页面中。 Aspose.Words 有自己的文档布局引擎。
要确定书签或其他节点的坐标,需要构建文档布局。为了构建准确的文档布局,文档中使用的字体应该在处理文档的环境中可用。如果 Aspose.Words 找不到文档中使用的字体,将替换该字体。由于不同的字体规格,这可能会导致字体不匹配和文档布局差异,从而导致
LayoutEnumerator
返回不正确的节点坐标。您可以实现 IWarningCallback 以在执行字体替换时获取通知。
默认情况下,Aspose.Words 使用环境中安装的字体,但可以显式指定 Aspose.Words 查找字体的位置。
此外,在评估模式下,Aspose.Words 在文档顶部注入评估消息,这可能会移动文档内容,因此
LayoutEnumerator
检测到的坐标也会发生移动。
如果上述内容没有帮助,请将问题发布到 Aspose.Words 支持论坛 并附上有问题的文档。