Нет готового API LibreOffice, который мог бы сделать это, но в зависимости от того, как вы решите детали, я думаю, что это все еще выполнимо. Пара советов:
Если вы хотите экспортировать таблицы, сначала вам нужно перебрать контейнер таблицы документа, XTextTablesSupplier
позволяет вам сделать это.
Тогда вы, вероятно, захотите скопировать каждую таблицу в отдельный документ Writer, поэтому при экспорте страницы Writer там отображается только таблица, больше ничего. (Имейте в виду, что таблицы могут занимать несколько страниц). Копирование содержимого между документами возможно с использованием интерфейса XTextCopy
.
Если у вас есть документ Writer, который содержит только одну таблицу, вам нужно перебрать все страницы документа: компонент открытого документа может быть приведен к XRenderable
, тогда getRendererCount()
сообщит вам о количество страниц. (Вы также можете использовать XPageCursor
, но прежний интерфейс будет необходим в любом случае ниже.)
Наконец, если у вас есть одна страница одного документа, вы можете использовать метод render()
интерфейса XRenderer
для фактического отображения страницы в векторном формате.
Я бы посоветовал вам подумать, действительно ли вы хотите делать все это внутри самого LibreOffice; Вы можете упростить свою работу, если замените шаги 3. и 4. на экспорт в PDF, а затем самостоятельно обработать преобразование PDF в EMF.