Поделиться через


Расширение функции экспорта в неизменяемом формате в службы Word Automation Services

Расширение Word Automation Services в Microsoft Office 2013 для замены библиотеки, используемой функции экспорта в неизменяемом формате.

Общие сведения о Word conversion службы фиксированной форматов файлов экспорта компонента

В этой статье описывается расширение функции экспорта в неизменяемом формате Word Automation Services для использования различных экспорта в неизменяемом формате библиотеки DLL, сторонние разработчики могут заменить те, предоставляемым корпорацией Майкрософт. Этот механизм требует и расширяет интерфейс COM расширяемость фиксированного формата в клиенте Office. Для получения дополнительных сведений см расширение функции экспорта фиксированный формат Office 2007.

Обнаружение

Word Automation Services позволяет сторонних разработчиков заменить выходные данные фиксированного формата поддерживается:

  • PDF
  • XPS

Чтобы заменить каждый формат, библиотека DLL должна находиться в том же каталоге, что и основная библиотека (Sword.dll) для Word Automation Services (путь установки: root\WebServices\ConversionService\Bin\Converter), и иметь определенное имя файла, указанное в таблице 1.

Таблица 1. Имена файлов для библиотек DLL фиксированного формата

Формат Имя файла
PDF Renderpdf.dll
XPS Renderxps.dll

Инициализация

Библиотеки DLL необходимо экспортировать в метод с указанной ниже сигнатурой.

HRESULT HrGetDocExporter (
  IMsoDocExporter **ppimde,
  IMsoServerFileManagerSite *psfms,
  PFNKeepAlive pfnKeepAlive
)

Функции требуется DLL двух интерфейсов и указатель метода, описанных в следующем разделе. Если функция возвращает сбоя службы не вернуться к экспорта предоставленные корпорацией Майкрософт. Вместо этого службы сообщает преобразования как ошибочный.

IMsoDocExporter

Интерфейс IMsoDocExporter идентична существующего интерфейса, задокументированные в MSDN. Для получения дополнительных сведений см расширение функции экспорта фиксированный формат Office 2007. При предыдущем методом успешно, этот интерфейс выполняет преобразование. За пределы требованиям, описанным в упомянутой выше статье разработчики экспорта в неизменяемом формате библиотеки DLL необходимо иметь представление вызова службы отмеченными IMsoDocExporter на другой поток, на котором служба вызывается HrGetDocExporter. Библиотеки DLL должен быть способен обрабатывать это без упаковки вызова потока, который называется HrGetDocExporter, так как служба не запускается обработки сообщений и упакованные вызова никогда не будет через (приведет к зависание и последующих сбоя).

IMsoServerFileManagerSite

Интерфейс IMsoServerFileManagerSite определяется следующим образом.

#undef  INTERFACE
#define INTERFACE  IMsoServerFileManagerSite
DECLARE_INTERFACE(IMsoServerFileManagerSite)
{
  STDMETHOD_(BOOL, FGetHandle) (const WCHAR *pwzFileName, HANDLE *phFile, BOOL fRead, BOOL fWrite) PURE;
  STDMETHOD_(BOOL, FCloseHandle) (HANDLE hFile) PURE;
};

Этот интерфейс предоставляет следующие методы.

Табл. 2. Методы, предоставляемые интерфейсом IMsoServerFileManagerSite**

Метод Описание
FGetHandle Получает дескриптор файла.
FCloseHandle Освобождает дескриптор файла.

Этот интерфейс не наследует от IUnknown. Соответственно экспорта в неизменяемом формате DLL-Библиотека может хранить ссылки на нее в течение времени его существования.

FGetHandle

Фиксированного формата экспорта библиотеки DLL вызывает эту функцию для получения дескрипторов файла для записи. Он должен не пытайтесь открывать файлы каким-либо другим способом, так как служба выполняется в среде сильно ограниченных без доступа в большинстве ситуаций в файловой системе.

BOOL FGetHandle (
  const WCHAR *pwzFile,
  HANDLE *phFile,
  BOOL fRead,
  BOOL fWrite
)

Табл. 3. Параметры FGetHandle**

Параметр Описание
pwzFile Указывает имя файла, фиксированного формата экспорта DLL пытается открыть. Это не должно быть полный путь к файлу, его необходимо указать только имя файла (например, Output.pdf).
phFile Задает дескриптор в указанный файл, если файл открыт успешно. Экспорта в неизменяемом формате DLL можно использовать этот МАРКЕР в обычных операций до его закрывает путем вызова метода FCloseHandle.
Fread Указывает, будет ли файл открыт для чтения.
fWrite Указывает, является ли файл открыт для записи. Эта функция возвращает значение TRUE для обозначения успешности и FALSE при сбое.

FCloseHandle

Экспорта в неизменяемом формате DLL вызывает эту функцию, чтобы закрыть получить с помощью вызова метода FGetHandle дескрипторов файлов.

BOOL FCloseHandle (
  HANDLE phFile,
)

Параметр phFile указывает дескриптор закрываемого файла. Если значение, возвращаемое этим методом равно 0, операция завершилась неудачно. Все остальные значения — обозначения успешности.

PFNKeepAlive

Если библиотека DLL для экспорта фиксированного формата активна, она должна вызывать функцию KeepAlive через регулярные интервалы (настраиваемую администратором), чтобы предотвратить, что служба не может предположить, что dll экспорта фиксированного формата не отвечает, и, таким образом, завершает процесс. typedef void (*PFNKeepAlive)(void)

См. также

Дополнительные сведения см. в следующих источниках: