Ms word OpenXml和Word:如何计算WrapPolygon坐标?

Ms word OpenXml和Word:如何计算WrapPolygon坐标?,ms-word,openxml,openxml-sdk,Ms Word,Openxml,Openxml Sdk,我正在使用OpenXml库创建Microsoft Word文档。我需要的大部分都已经正常工作了。然而,我一生都无法找到以下信息 我正在锚定中显示一个图像,这会导致文本环绕图像。我使用了WrapSquare,但这似乎会影响上一段的最后一行,如下图所示。图像定位到第二段,但会导致第一段的最后一行也在图像周围缩进 在Word中进行实验,我可以通过将包装更改为wraplight使文本按照我的意愿进行包装。但是,这需要一个带有多个坐标的WrapPolygon。我找不到任何方法来确定多边形坐标,使它们与图

我正在使用OpenXml库创建Microsoft Word文档。我需要的大部分都已经正常工作了。然而,我一生都无法找到以下信息

我正在锚定中显示一个图像,这会导致文本环绕图像。我使用了
WrapSquare
,但这似乎会影响上一段的最后一行,如下图所示。图像定位到第二段,但会导致第一段的最后一行也在图像周围缩进

在Word中进行实验,我可以通过将包装更改为
wraplight
使文本按照我的意愿进行包装。但是,这需要一个带有多个坐标的
WrapPolygon
。我找不到任何方法来确定多边形坐标,使它们与图像的大小相匹配,以像素为单位

文档甚至没有指出这些坐标使用的单位,更不用说如何从像素计算它们了。我只能假设计算将涉及DPI值,但我不知道当用户最终将文档加载到Word中时,如何确定将使用什么DPI


如果有人能首先解释为什么会发生上述问题,我也会感到满意。我可以将图像向下移动,上一段不再受影响。但为什么这是必要的呢?(与左侧和顶部文本设置的距离均为0)。

元素有两个可能的子元素
LineTo
StartPoint
,每个子元素都采用x和y坐标。根据2.1.1331第1部分第20.4.2.9节,LineTo(包裹多边形线末端位置)2.1.1334第1部分第20.4.2.14节,开始(包裹多边形开始)可在[]中找到:

该标准规定x和y属性在中表示 Office在固定坐标中解释x和y属性 空间为21600x21600


关于将像素转换为EMU(英制公制单位),请以本文为例。

元素有两个可能的子元素,分别为
LineTo
StartPoint
,每个子元素都具有x和y坐标。根据2.1.1331第1部分第20.4.2.9节,LineTo(包裹多边形线结束位置)2.1.1334第1部分第20.4.2.14节,开始(包裹多边形开始)可在[]中找到:

该标准规定x和y属性在中表示 Office在固定坐标中解释x和y属性 空间为21600x21600


关于将像素转换为EMU(英制公制单位),请看这篇文章作为一个例子。

我最终解决了这个问题。不管标准怎么说,
WrapPolygon
坐标不是EMU(英制公制单位)。坐标是相对于固定坐标空间的(21600 x 21600,如阿穆拉提供的报价中所述)

更具体地说,这意味着0,0位于图像的左上角,2160021600位于图像的右下角。无论图像大小如何,都会出现这种情况。大于21600的坐标延伸到图像外部


根据“21600值是Microsoft Office早期版本绘图层的遗留工件。”

我最终解决了这个问题。尽管标准中有规定,WrapPolygon坐标不是EMU(英制公制单位)。坐标是相对于固定坐标空间的(21600 x 21600,如阿穆拉提供的报价中所述)

更具体地说,这意味着0,0位于图像的左上角,2160021600位于图像的右下角。无论图像大小如何,都会出现这种情况。大于21600的坐标延伸到图像外部


据介绍,“21600值是Microsoft Office早期版本绘图层的遗留工件。“

感谢您提供的说明这些坐标以EMU表示的参考。我一直使用ECMA-376作为参考,但它似乎没有提供此信息。关于这篇博文,我对这篇博文很熟悉。它确实展示了如何将像素转换为基于英寸的值(如EMU);但是,它假设DPI为72。据我所知,DPI可以是72、96、300甚至1200。顺便说一句,Microsoft文档中的最后一句对我来说没有任何意义。21600x21600 EMU的坐标空间不到一英寸。我遗漏了其中的一部分。感谢您提供的说明这些坐标被重新表示的参考ted在EMUs中。我一直使用ECMA-376作为参考,但它似乎没有提供此信息。关于这篇博文,我对这篇博文很熟悉。它确实展示了如何将像素转换为基于英寸的值(就像EMUs一样);但是,它假设DPI为72。据我所知,DPI可以是72、96、300甚至1200。顺便说一句,Microsoft文档中的最后一句对我来说没有任何意义。21600x21600 EMU的坐标空间不到一英寸。我遗漏了其中的一部分。