Pull to refresh

Comments 14

Если сохранить файл с вопросами в DOCX формате, то его можно переименовать в zip и разархивировать. Картинки будут просто файлами в папке.
С DOC->ODT->ZIP аналогично. Все картинки будут в папке Pictures.
В данном случае требовалось сохранить кусок текста вместе с картинками и формулами целиком. Формулы же, насколько я помню, не сохраняются в качестве картинок (если только не сохранить файл doc в виде html, но тогда картинки формул будут в плохом качестве).
Тогда чуть иначе.
Если документ 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
а какие действия программы подразумевает выбор варианта ответа «другой ответ»?
Имеется в виду, надо ли после выбора этого ответа вводить «другой верный ответ»? Не нужно, это просто один из 5 равноправных вариантов ответа, картинка как и все
А я обычно (если нужно работать с большим количеством графических файлов) пользуюсь ImageMagick'ом. В частности утилитой convert из его состава.
Sign up to leave a comment.

Articles