Получить высоту отображаемого текста и изображений в MS Word - PullRequest
5 голосов
/ 29 января 2010

Я создаю систему создания газет. Сегодня я использую библиотеку Aspose.Words для генерации газеты, используя формат Docx в качестве вывода, на основе множества других документов в качестве ввода.

Основная идея состоит в том, чтобы загрузить множество статей статей в список, а затем создать окончательный документ с газетой.

Нам нужно получить общую высоту текста (с изображениями и таблицами) внутри столбцов. Поскольку библиотеки, такие как Aspose.Words, работают с форматом Docx, таким как DOM, нет способа узнать, как будет располагаться текст внутри столбцов. Тогда я не могу знать настоящую высоту.

Мы работали по-своему, чтобы достичь этой высоты. Я использую функцию MeasureString () из пространства имен System.Drawing.Graphics. Он возвращает ширину и высоту, используемые строкой, и я могу оценить, сколько линий (и точек или дюймов) он будет использовать внутри столбца.

Но это очень плохо, и нам нужно более достойное решение. Мы думаем использовать OpenXML SDK для получения этой высоты, не так ли?

Aspose.Words не поддерживает способ узнать это, и все классы Render являются частными для библиотеки.

Можете ли вы придумать новый способ получить эту высоту?

Спасибо, Даниэль Кох

Ответы [ 3 ]

1 голос
/ 07 февраля 2010

Это свойство не предоставляется в Open XML или SDK (или VBA / VSTO в этом отношении). Как именно высоту рассчитывают, нет ни в одной документации. Возможно, то, как вы это делаете, - это способ продолжить.

Другой возможный способ - поместить ваши TextColumns в столбец / ячейку таблицы и получить эту высоту (но если в ячейке два текстовых столбца, и первый «заполняет» ячейку сверху вниз, а второй нет т, у вас все еще будет проблема с невозможностью рассчитать размер второго).

0 голосов
/ 25 февраля 2010

Спасибо всем за ответ.

Я закончил, изменив Aspose.Words на PDFLib. Теперь я могу управлять страницами, столбцами или чем угодно, используя Postscript Points.

Мы сохраняем Aspose.Words только для импорта контента, но он не предназначен для печати бюллетеня.

0 голосов
/ 24 февраля 2010

У меня почти та же проблема, что и у вас .. Но в моем случае я имею дело с вопросами внутри тестового экзамена .. Что ж, в настоящее время мы используем RTF для построения вопросов и RichTextBox для измерения высоты. Просто так (http://blogs.technet.com/david_bennett/archive/2005/04/06/403402.aspx).. И я хочу перейти на DOCX .. Но все же не повезло с тем, как измерить вопрос с помощью таблиц и изображений .. :-( Прямо сейчас я изучаю элементы документа (http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word._document_members.aspx),, чтобы попытаться сделать с Word Automation ..

С уважением,

Bruno

...