2011-08-27 85 views
1

我正在使用OpenXml庫創建Microsoft Word文檔。我需要的大部分功能已經正常工作。但是,我不能爲我的生活尋找下面的信息。OpenXml和Word:如何計算WrapPolygon座標?

我在錨點中顯示圖像,這會導致文字環繞圖像。我用WrapSquare,但這似乎影響以前的段的最後一行,如下圖所示。圖像被錨定到第二段,但導致第一段的最後一行也縮進圖像。

Word Screenshot http://www.softcircuits.com/Client/Word.jpg

在Word中進行實驗,我可以讓文本換我多麼希望通過改變包裝來WrapTight。但是,這需要一個WrapPolygon與幾個座標。我無法找到任何方法來確定多邊形座標,以便它們匹配圖像的大小,以像素爲單位。

該文檔甚至沒有指出這些座標使用什麼單位,更不用說如何從像素計算它們。我只能假設計算會涉及DPI值,但我不知道如何確定用戶最終將文檔加載到Word時將使用的DPI。

如果有人能解釋爲什麼上述問題首先發生,我也會很滿意。我可以將圖像向下移動,而前一段落不再受影響。但爲什麼這是必要的? (與文字設定爲左側和頂部的距離爲0" 。)

回答

1

我終於解決了這個問題。儘管標準說的是,WrapPolygon座標是而不是動車組(英制公制單位)。座標是相對於固定座標空間(21600 x 21600,如在amurra提供的報價中所述)。

更具體地說,這意味着0,0位於圖像的左上角,而21600,21600位於圖像的右下角。無論圖像的大小如何,情況都是如此。超過21600的座標超出圖像範圍。

根據this article,「21600值是來自Microsoft Office早期版本繪圖層的遺留工件」。

2

WrapPolygon元件具有LineToStartPoint兩個可能的子元素,每個取ax和y座標。根據1331年2月1日第1部分第20.4節.2.9,了lineTo(包裝多邊形線條結束位置)1334年2月1日第1和部分第20.4.2.14,啓動(包裝多邊形開始)在[MS-OI29500: Microsoft Office Implementation Information for ISO/IEC-29500 Standard Compliance]實測值:

的標準規定的X y屬性代表 動車組。Office解釋x和y屬性在固定座標 的空間21600x21600。

至於像素轉換爲電動車組(英文公制單位),看看這blog後的一個例子。

+0

感謝您指出這些座標在EMU中表示的參考。我一直在使用ECMA-376作爲參考,它似乎沒有提供這些信息。關於博客文章,我對這個很熟悉。它確實顯示瞭如何將像素轉換爲基於英寸的值(如EMU);但是,它假設DPI爲72.據我瞭解,DPI可以是72,96,300甚至1200等值。 –

+0

順便說一句,Microsoft文檔中的最後一句對我沒有任何意義。 21600x21600動車組的座標空間小於1英寸。我錯過了這個的一部分。 –