Комментарии 14
Если сохранить файл с вопросами в DOCX формате, то его можно переименовать в zip и разархивировать. Картинки будут просто файлами в папке.
С DOC->ODT->ZIP аналогично. Все картинки будут в папке Pictures.
С DOC->ODT->ZIP аналогично. Все картинки будут в папке Pictures.
Попробовал. Работает.
В данном случае требовалось сохранить кусок текста вместе с картинками и формулами целиком. Формулы же, насколько я помню, не сохраняются в качестве картинок (если только не сохранить файл doc в виде html, но тогда картинки формул будут в плохом качестве).
Тогда чуть иначе.
Если документ odt содержит формулы, то при разархивировании получим некое количество папок «Object1», «Object2» и т.д. в каждой из которых будет файл
Это чистой воды mathML. Его можно сразу скормить рендеру mathjax внутри QWebKit, например.
А расположение этих объектов находится в файле
Если документ odt содержит формулы, то при разархивировании получим некое количество папок «Object1», «Object2» и т.д. в каждой из которых будет файл
contents.xml
. А внутри — описание объекта примерно в таком виде:Описание
<?xml version="1.0" encoding="UTF-8"?>
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<semantics>
<mrow>
<mi>f</mi>
<mrow>
<mrow>
<mo fence="true" stretchy="false">(</mo>
<mrow>
<mi>x</mi>
</mrow>
<mo fence="true" stretchy="false">)</mo>
</mrow>
<mo stretchy="false">=</mo>
<mfrac>
<mn>1</mn>
<mrow>
<mi mathvariant="normal">σ</mi>
<msqrt>
<mrow>
<mn>2</mn>
<mi mathvariant="normal">π</mi>
</mrow>
</msqrt>
</mrow>
</mfrac>
</mrow>
<msup>
<mi>e</mi>
<mrow>
<mo stretchy="false">−</mo>
<mfrac>
<msup>
<mrow>
<mo fence="true" stretchy="false">(</mo>
<mrow>
<mrow>
<mi>x</mi>
<mo stretchy="false">−</mo>
<mi mathvariant="normal">μ</mi>
</mrow>
</mrow>
<mo fence="true" stretchy="false">)</mo>
</mrow>
<mn>2</mn>
</msup>
<mrow>
<mn>2</mn>
<msup>
<mi mathvariant="normal">σ</mi>
<mn>2</mn>
</msup>
</mrow>
</mfrac>
</mrow>
</msup>
</mrow>
<annotation encoding="StarMath 5.0">f ( x ) = {1} over {%sigma sqrt{2%pi} }e^-{{(x-%mu)^2} over {2%sigma^2}}</annotation>
</semantics>
</math>
Это чистой воды mathML. Его можно сразу скормить рендеру mathjax внутри QWebKit, например.
А расположение этих объектов находится в файле
content.xml
С winrar даже переименовывать не нужно
Еще можно документ сохранить как web-страницу, тогда картинки тоже свалятся в подпапку, причем каждая в двух вариантах: как уменьшенное изображения а-ля thumbnail (всегда в jpg), и как исходное (в том формате, как картинка добавлялась в Ворд).
Насчет EMF; делается так:
ЕМФ — это виндовый т.н. метафайл, вторая версия WMF (E=enchanced). Он обслуживается абсолютно стандартными виндовыми же API. Есть такая функция — PlayMetafile.
Вот список функций для работы с метафайлами, вам нужна msdn.microsoft.com/en-us/library/windows/desktop/dd162800%28v=vs.85%29.aspx
Создается DC, открывается метафайл и потом он, метафайл проигрывается на этом DC. Потом с этого DC делается запись в файл PNG. Примеры на С привести не могу, к сожалению — у нас все на Delphi пишется.
Более того, в метафайле могут быть не только картинки, но и текст. В принципе, можно сделать итератор по записям метафайла (см. перечень функций), найти запись с картинкой и взять только ее. Но для вайше задачи нет разницы — можно и просто Play.
Upd: а, ну вот же пример: msdn.microsoft.com/en-us/library/windows/desktop/dd162750%28v=vs.85%29.aspx
ЕМФ — это виндовый т.н. метафайл, вторая версия WMF (E=enchanced). Он обслуживается абсолютно стандартными виндовыми же API. Есть такая функция — PlayMetafile.
Вот список функций для работы с метафайлами, вам нужна msdn.microsoft.com/en-us/library/windows/desktop/dd162800%28v=vs.85%29.aspx
Создается DC, открывается метафайл и потом он, метафайл проигрывается на этом DC. Потом с этого DC делается запись в файл PNG. Примеры на С привести не могу, к сожалению — у нас все на Delphi пишется.
Более того, в метафайле могут быть не только картинки, но и текст. В принципе, можно сделать итератор по записям метафайла (см. перечень функций), найти запись с картинкой и взять только ее. Но для вайше задачи нет разницы — можно и просто Play.
Upd: а, ну вот же пример: msdn.microsoft.com/en-us/library/windows/desktop/dd162750%28v=vs.85%29.aspx
Забыл вставить саму ссылку на список функций, извините. msdn.microsoft.com/en-us/library/windows/desktop/dd145052%28v=vs.85%29.aspx
заказчик отблагодарила? :)
а какие действия программы подразумевает выбор варианта ответа «другой ответ»?
А я обычно (если нужно работать с большим количеством графических файлов) пользуюсь ImageMagick'ом. В частности утилитой convert из его состава.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Парсинг документа Word на картинки или история о преддипломных буднях