2013-03-17 2 views
1

Я использую LibreOffice 4 и Java Uno API для управления документами.Open/Libre Office API заменить изображение

У меня ситуация, когда я импортирую HTML-документы с img-тегами в LibreOffice через Java Uno API и сохраняю документ в других форматах (таких как odt, docx, doc, rtf).

Проблема заключается в том, что LibreOffice преобразует img-теги в графические объекты со ссылками (не встроенными в документ).

Я пытался использовать html base64, но кажется, что LibreOffice не поддерживает это.

Теперь я хочу преобразовать эти связанные графические объекты в объекты встроенной графики.
Я могу перебирать изображения через XTextGraphicObjectsSupplier, но я не могу понять, как сделать эти объекты встроенными.

Возможно ли это?

Возможно, возможно сделать некоторый магический атрибут в теге html img, а LibreOffice будет его внедрять?

+0

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

+0

Вы читали то, что я написал? Я спрашиваю, как заменить изображение. Это не имеет никакого отношения к вставке изображения. Если у вас есть документ (например, odt), и в этих документах есть графические объекты со ссылками (не встроенными), тогда возникает вопрос: как заставить эти связанные объекты быть внедренными? Я думаю, что нет необходимости размещать код для установки каких-либо изображений (на самом деле это делается LibreOffice прозрачно - я не запускаю изображения из кода). –

+0

Хорошо, попробуй еще раз. Я не знаю, понимаете ли вы меня. Я знаю, как вставлять изображения через java API openoffice/libreoffice. Это не тот случай. В форматах odt, doc, docx вы можете хранить изображения двумя способами: встроенные изображения в файле odt/doc/docx или только как ссылки (например, ссылки HTTP, ссылки на файлы). Проблема заключается в следующем: у меня есть файл с файлами с ссылками на реальные данные (не встроенные в odt-файл). Теперь я хочу сделать некоторые отпечатки, которые сделают эти изображения встроенными. Я спрашиваю, знаете ли вы код для этого. Здесь не нужен код для вставки изображений, который я могу здесь вставить. –

ответ

1

Кажется, что libre/open office не поддерживает эту опцию. Единственный способ - удалить и снова вставить встроенное изображение, но вы должны знать о его форматировании (например, размер и т. Д.). Я достиг своей цели, выполнив следующие шаги (WARN это взломать ...):

  1. Сохраните HTML-код в odt. В этой нечетной графике они связаны с файлами на диске.
  2. Unzip odt file.
  3. Создать каталог Pictures в распакованном каталоге и переместить туда все изображения.
  4. Редактировать content.xml и заменить путь к системным файлам на Pictures/file-name.
  5. Редактировать META-INF/manifest.xml и что-то вроде этого <manifest:file-entry manifest:media-type="image/png" manifest:full-path="Pictures/file-name"/>
  6. Почтовая папка и изменение расширения на odt.
  7. Прочтите файл odt через Libre/Open Office Java Uno API. Теперь этот документ имеет встроенные графические объекты.
Смежные вопросы