Интерфейсы по созданию и сохранению документов

В данной статье описаны различные интерфейсы, необходимые для создания и сохранения документов в AlterOffice. Рассматриваются методы доступа к компонентам программы и возможности сохранения документов в различных форматах.


XSpreadsheetDocument


Этот интерфейс предоставляет доступ к документу ACell. С помощью этого интерфейса можно получить доступ к листам документа, добавлять новые листы и удалять существующие.

Получение интерфейса XSpreadsheetDocument :
XSpreadsheetDocument(xComponent, UNO_QUERY_TYPE)
xComponent - компонент указывающий на табличный документ
UNO_QUERY_TYPE -  тип запроса интерфейса ()  

Пример использования:
Reference< XComponent > xComponent(xComponentLoader->loadComponentFromURL( 
           OUString("file:///C:/test/document.ods"), "_blank", 0, props));
Reference<XSpreadsheetDocument> xDoc(xComponent, UNO_QUERY_THROW);
Reference<XSpreadsheets> xSheets = xDoc->getSheets();

В этом примере демонстрируется получения интерфейса XSpreadsheetDocument из объекта xComponent.

Методы интерфейса XSpreadsheetDocument:


  • getSheets() -  возвращает коллекцию листов документа ACell. Этот объект позволяет получить доступ к ячейкам листов и работать с их содержимым.
Параметры:
-
Возвращаемое значение: XSpreadsheets

XTextDocument


XTextDocument является основным интерфейсом для работы с текстовым документом. Он предоставляет доступ к всему содержимому документа, включая текст, таблицы, графику, макросы и другие объекты. С помощью XTextDocument можно создавать новые документы, открывать существующие, сохранять их, а также выполнять множество других задач.

Пример использования XTextDocument:

Reference<XTextDocument> xDoc(xComponent, UNO_QUERY);
// Получаем интерфейс XText для вставки текста
Reference<XText> xText = xDoc->getText();
// Вставляем текст
xText->setString("Hello, World!");

Методы интерфейса XTextDocument:


  • getText() - получает объект текста документа.
Параметры:
-
Возвращаемое значение: com::sun::star::text::Text

XComponentContext


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


Пример использования XComponentContext:


Reference< XComponentContext > xContext(::cppu::bootstrap());

Reference< XMultiComponentFactory > xServiceManager(

            xContext->getServiceManager());


Методы интерфейса XComponentContext:


  • getServiceManager() - позволяет получить экземпляр менеджера сервисов, который будет использоваться из ключа /singletons/com.sun.star.lang.theServiceManager.
Параметры:
-
Возвращаемое значение: com::sun::star::lang::XMultiComponentFactory

  • getValueByName(Name) - позволяет получить значение из контекста.
Параметры:
  • string Name - имя значения.
Возвращаемое значение: Any

XComponentLoader


Интерфейс XComponentLoader  необходим для загрузки компонентов по URL в среду фреймов.

Пример использования XComponentLoader:

// получаем экземпляр сервиса UNO Desktop
// получаем интерфейс XComponentLoader
Reference<XComponentLoader> xLoader(xContext->getServiceManager()->createInstanceWithContext(
           "com.sun.star.frame.Desktop", xContext), UNO_QUERY);

 // создаем новый документ или загружаем существующий
Sequence<PropertyValue> props(2);
PropertyValue prop[2];
prop[0].Name = "FliterName";
prop[0].Value <<= OUString("writer8");
prop[1].Name = "Overwrite";
prop[1].Value <<= Any(true);
props[0] = prop[0];
props[1] = prop[1];
Reference<XInterface> xComponent = xLoader->loadComponentFromURL(
           "file:///C:/test/document.odt", "_blank", 0, props);


При создании документа необходимо указать параметры для метода LoadComponentFromURL(). Например, в вышеуказанном примере свойство "FilterName" указывает на формат файла, в который будет сохранен документ. В данном случае значение "writer8" означает, что файл будет сохранен в формате  .odt.

Существуют и другие возможные значения для свойства "FilterName", например:
  • "writer8": формат документа AText версии 8;
  • "writer_pdf_Export": экспорт документа AText в формат PDF;
  • "calc8": формат документа ACell версии 8;
  • "calc_pdf_Export": экспорт документа  ACell  в формат PDF;

Методы интерфейса XComponentLoader:


  •  LoadComponentFromURL(URL, TargetFrameName, SearchFlags, Arguments) - загружает компонент, указанный в URL, в новый или существующий фрейм.
Параметры:

- string URL: определяет источник компонента AlterOffice. Допустимые значения:

  • private:factory/swriter - новый документ AText;
  • private:factory/scalc - новый документ ACell;
  • private:factory/sdraw - новый документ AGraph;
  • private:factory/simpress - новый документ AConcept;
  • file:///path/to/file - загрузка документа из файла.
- string TargetFrameName:  определяет окно, в котором будет открыт загружаемый документ. Допустимые значения:

  • _blank - открыть в новом окне (по умолчанию);
  • _self - открыть в текущем окне;
  • _parent - открыть в родительском окне;
  • _top - открыть в верхнем окне.
  • _default -  поведение загрузки документа будет зависеть от конкретной реализации компонента com.sun.star.frame.XComponentLoader. Если документ уже был открыт в другом окне, то оно будет использоваться.  Если текущее окно содержит пустой документ того же типа, что и загружаемый, то загружаемый документ будет открыт в этом окне. В противном случае будет создано новое окно.

long SearchFlags:   определяет поведение поиска фрейма при загрузке документа или компонента  . Допустимые значения:

  • SELF - поиск будет выполнен в текущем окне.
  • CHILDREN - поиск будет выполнен рекурсивно во всех дочерних окнах.
  • SIBLINGS - поиск будет выполнен во всех окнах на том же уровне.
  • PARENT - поиск будет выполнен во всех родительских окнах.
  • CREATE - если окно не будет найдено, будет создано новое окно.
  • TASKS - поиск будет выполнен во всех главных окнах вместо того, чтобы остановиться на первом найденном окне.
  • ALL - эквивалентно CHILDREN | SIBLINGS | PARENT.
  • GLOBAL - эквивалентно CHILDREN | SIBLINGS | PARENT | TASKS.
- sequence<com::sun::star::beans::PropertyValue> Arguments:  аргументы определяют поведение компонента или фильтра. Допустимые значения:

  • "Overwrite" - перезаписать файл, если он уже существует
  • "Hidden" - режим открытия документа в скрытом формате
  • "Password" - установить пароль на файл
  • "ReadOnly" - установить режим открытия документа "Только для чтения"
  • "Preview" - режим открытия документа в качестве предварительного просмотра

Возвращаемое значение: XComponent

XStorable


XStorable - интерфейс, который используется для сохранения документов в файловую систему. Этот интерфейс предоставляет функциональность для сохранения документа в различных форматах, таких как ODT, PDF, DOC и других.

Пример использования XStorable:

Reference< XStorable > xStorable(xDoc, UNO_QUERY);
xStorable->storeToURL(saveUrl, props);

Методы интерфейса XStorable:


  • getLocation() - после вызова метода XStorable::storeAsURL()  возвращает URL-адрес, по которому объект был сохранен.
Параметры:
-
Возвращаемое значение: string

  • hasLocation() - возвращает TRUE, если объект знает местоположение, FALSE если не знает.
Параметры:
-
Возвращаемое значение: boolean

  • isReadonly() - невозможно успешно вызвать метод XStorable::store(), если хранилище данных доступно только для чтения. Возвращает TRUE, если хранилище данных доступно только для чтения, FALSE в противном случае.
Параметры:
-
Возвращаемое значение: boolean

  • store() - сохраняет данные по URL-адресу. Только объекты, которые знают свое местоположение, могут быть сохранены.
Параметры:
-
Возвращаемое значение: void

  • storeAsURL(sURL, lArguments) - cохраняет  данные объекта по URL-адресу и делает этот URL новым местоположением объекта. Этот метод аналогичен  функции "Сохранить как" в пользовательском интерфейсе. Изменение местоположения требует сохранения документа в формате, который объект может загрузить. По этой причине реализация метода XStorable::storeAsURL() выбрасывает исключение, если используется чистый экспортный фильтр, он принимает только комбинированные фильтры импорта/экспорта. Для таких фильтров должен использоваться метод XStorable::storeToURL(), который не изменяет местоположение объекта.
Параметры:
  • string  sURL - новое местоположение компонента.
  • sequence< com::sun::star::beans::PropertyValue > lArguments - дополнительные, необязательные параметры при сохранении. Некоторые из них описаны в интерфейсе XTextDocument.
Возвращаемое значение: void

  • storeToURL(sURL, lArguments- cохраняет данные объекта по URL-адресу не делая URL новым местоположением объекта. Это метод аналогичен функции экспорта в пользовательском интерфейсе. Принимает все виды экспортных фильтров, а не только комбинированные импортно-экспортные фильтры, потому что он реализует возможность экспорта, а не возможность сохранения.
Параметры:
  • string  sURL - местоположение, где следует сохранить объект.
  • sequence< com::sun::star::beans::PropertyValue > lArguments - дополнительные, необязательные параметры при сохранении. Некоторые из них описаны в интерфейсе XTextDocument.
Возвращаемое значение: void

XComponent


XComponent - интерфейс, который используется для управления компонентами AlterOffice. Этот интерфейс предоставляет функциональность для открытия, сохранения и закрытия документов. 

Пример использования XComponent:

// сохраняем документ

xStorable->storeAsURL(saveUrl, props);


// закрывает документ

xComponent->dispose();


Методы интерфейса XComponent:


  • addEventListener(xListener) - добавляет прослушиватель событий к объекту. Если  вызывается  метод XComponent::dispose(), то источник событий вызывает метод disposing этого прослушивателя.
Параметры:
  • XEventListener xListener -  созданный прослушиватель.
Возвращаемое значение: void

  • dispose() - создатель объекта вызывает этот метод, чтобы явно освободить все ресурсы, удерживаемые этим объектом, и тем самым разорвать циклические ссылки.
Параметры:
-
Возвращаемое значение: void

  • removeEventListener(aListener) - удаляет прослушиватель событий из списка прослушивателей. Если указанный прослушиватель не зарегистрирован, то метод не будет выполнять никаких действий.
Параметры:
  • XEventListener aListener -  удаляемый прослушиватель.
Возвращаемое значение: void

Ниже прикреплен пример кода на языке C++ и C#, который демонстрирует, как использовать API AlterOffice для создания нового документа AText и сохранения его в формате ODT. Он использует интерфейсы XComponentContext, XComponentLoader, XComponent, XStorable и другие для работы с объектами и функциями AlterOffice. В частности, этот код создает новый документ AText и сохраняет его.
Прикреплённые файлы
for_linux.tar
404kb
save_odt_document.cpp
404kb
save_odt_document.cs
404kb