OpenXml и Word: как рассчитать координаты WrapPolygon? - PullRequest
1 голос
/ 27 августа 2011

Я создаю документ Microsoft Word с использованием библиотеки OpenXml.Большая часть того, что мне нужно, уже работает правильно.Тем не менее, я не могу на всю жизнь найти следующую информацию:

Я показываю изображение в привязке, которая заставляет текст обернуться вокруг изображения.Я использовал WrapSquare, но это, похоже, влияет на последнюю строку предыдущего абзаца, как показано на рисунке ниже.Изображение привязано ко второму абзацу, но заставляет последнюю строку первого абзаца также делать отступ вокруг изображения.

Снимок экрана Word http://www.softcircuits.com/Client/Word.jpg

Экспериментируя в Word, я могу сделать текстоберните, как я хочу, изменив обёртку на WrapTight.Однако для этого требуется WrapPolygon с несколькими координатами.И я не могу найти способ определить координаты многоугольника, чтобы они соответствовали размеру изображения в пикселях.

Документация даже не указывает, какие единицы используются для этих координатне говоря уже о том, как рассчитать их из пикселей.Я могу только предположить, что в расчете будет использоваться значение DPI, но я не знаю, как определить, какой DPI будет использоваться, когда пользователь в конечном итоге загрузит документ в Word.

Я также был бы удовлетворен, если бы кто-то мог объяснитьпочему проблемы, описанные выше, происходят в первую очередь.Я могу сдвинуть изображение вниз, и предыдущий абзац больше не влияет.Но почему это необходимо?(Параметр «Расстояние от текста» для левого и верхнего элементов равен 0 ".)

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Я наконец решил это. Несмотря на то, что говорится в стандарте, WrapPolygon координаты , а не EMU (английские метрические единицы). Координаты указаны относительно фиксированного координатного пространства (21600 x 21600, как указано в цитате, предоставленной amurra).

В частности, это означает, что 0,0 находится в верхнем левом углу изображения, а 21600,21600 - в нижнем правом углу изображения. Это имеет значение независимо от размера изображения. Координаты больше 21600 выходят за пределы изображения.

Согласно этой статье , «значение 21600 является устаревшим артефактом из уровня рисования ранних версий Microsoft Office».

2 голосов
/ 31 августа 2011

Элемент WrapPolygon имеет два возможных дочерних элемента LineTo и StartPoint, каждый из которых принимает координаты топора и y.В соответствии с 2.1.1331, часть 1, раздел 20.4.2.9, lineTo (конечная позиция линии обтекания полигона) и 2.1.1334, часть 1, раздел 20.4.2.14, начало (начало обтекания многоугольника) найденов [ MS-OI29500: Информация о реализации Microsoft Office для соответствия стандарту ISO / IEC-29500 ]:

Стандарт гласит, что атрибуты x и y представлены в EMU.Office интерпретирует атрибуты x и y в фиксированном координатном пространстве 21600x21600.

Что касается преобразования пикселей в EMU (английские метрические единицы), взгляните на эту запись blog для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...