Я динамически создаю документы Word, используя шаблонизатор Velocity. Документы создаются в формате XML (с использованием стандарта Microsoft Office 2003 WordprocessML XML).
Я встраиваю изображение (закодированное в формате Base64) в WordML традиционным способом:
<w:pict>
<v:shapeType> ... </v:shapeType>
<w:binData w:name="wordml://02000002.jpg"> [ encoded data] </w:binData>
<v:shape id="_x0000_s1026"
type="#_x0000_t75"
style="width:100%;height:100%"
o:allowoverlap="f"
>
<v:imagedata src="wordml://02000002.jpg" o:title="testimage2">
</v:imagedata>
</v:shape>
</w:pict>
Проблема связана с размером / масштабированием изображения. Обратите внимание на атрибут style
на теге <v:shape>
. Установка высоты и ширины в 100% не размер изображения к его фактическому размеру. Он устанавливает высоту и ширину примерно на 1,04 дюйма, что искажает изображение. Оставление высоты и ширины имеет тот же эффект. Настройка высоты и ширины на auto
имеет тот же эффект.
Самое досадное, что если я открою сгенерированный документ в Word 2003, щелкните правой кнопкой мыши на изображении, откройте диалоговое окно «Формат изображения» и перейдите на вкладку «Размер», где в «Исходном размере» отображаются правильные высота и ширина. Он даже предоставляет кнопку «Сброс», которая изменяет размер изображения до его исходного размера (при условии, что установлен флажок «Относительно исходного размера изображения».)
Я как:! * @ & # ^ #% ???
Итак, мой вопрос:
В любом случае в контексте WordML можно получить исходные значения размера для изображения (или указать Word использовать исходный размер изображения)?
Если кто-то может помочь с ответом на этот вопрос, я обещаю, что напишу подробное сообщение в блоге, чтобы убедиться, что я буду последним человеком, который имеет дело с этим.