Как экспортировать таблицу в текстовом документе (ODT или DOCX) в формат EMF через API - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть текстовый документ (ODT или DOCX) с некоторыми таблицами.Я использую LibreOffice API (в Java), чтобы открыть этот документ.

Я хочу экспортировать таблицы в виде файлов EMF.Есть идеи?PS Официальная документация по API LibreOffice (OpenOffice) очень плохая.В этой очень интересной статье http://fivedots.coe.psu.ac.th/~ad/jlop/ эта информация не найдена.

1 Ответ

0 голосов
/ 25 апреля 2019

Нет готового API LibreOffice, который мог бы сделать это, но в зависимости от того, как вы решите детали, я думаю, что это все еще выполнимо. Пара советов:

  1. Если вы хотите экспортировать таблицы, сначала вам нужно перебрать контейнер таблицы документа, XTextTablesSupplier позволяет вам сделать это.

  2. Тогда вы, вероятно, захотите скопировать каждую таблицу в отдельный документ Writer, поэтому при экспорте страницы Writer там отображается только таблица, больше ничего. (Имейте в виду, что таблицы могут занимать несколько страниц). Копирование содержимого между документами возможно с использованием интерфейса XTextCopy.

  3. Если у вас есть документ Writer, который содержит только одну таблицу, вам нужно перебрать все страницы документа: компонент открытого документа может быть приведен к XRenderable, тогда getRendererCount() сообщит вам о количество страниц. (Вы также можете использовать XPageCursor, но прежний интерфейс будет необходим в любом случае ниже.)

  4. Наконец, если у вас есть одна страница одного документа, вы можете использовать метод render() интерфейса XRenderer для фактического отображения страницы в векторном формате.

Я бы посоветовал вам подумать, действительно ли вы хотите делать все это внутри самого LibreOffice; Вы можете упростить свою работу, если замените шаги 3. и 4. на экспорт в PDF, а затем самостоятельно обработать преобразование PDF в EMF.

...