Compartilhar via


Estender o recurso de exportação de formato fixo no Word Automation Services

Estenda Word Automation Services no Microsoft Office 2013 para substituir a biblioteca usada pelo recurso de exportação com formato fixo.

Recurso de exportação de Introdução ao Word conversão serviço fixa-formato de arquivo

Este artigo descreve como estender o recurso de exportação com formato fixo do Word Automation Services usar DLLs diferentes exportação com formato fixo, para que os desenvolvedores de terceiros podem substituir daquelas fornecidas pela Microsoft. Esse mecanismo requer e estende o cliente do Office interface COM de extensibilidade de formato fixo. Para obter mais informações, consulte Estendendo o recurso de exportação de formato fixo do Office 2007.

Descoberta

Word Automation Services permite que os desenvolvedores de terceiros substituir uma ou ambas as saídas de formato fixo suportadas:

  • PDF
  • XPS

Para substituir cada formato, a DLL deve estar localizada no mesmo diretório que a biblioteca principal (Sword.dll) para Os Serviços de Automação do Word (caminho de instalação: root\WebServices\ConversionService\Bin\Converter) e deve ter o nome do arquivo específico especificado na tabela 1.

Tabela 1. Nomes de arquivo para DLLs de exportação de formato fixo

Formatar Nome do Arquivo
PDF Renderpdf.dll
XPS Renderxps.dll

Inicialização

A DLL deve exportar um método com a assinatura a seguir.

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

A função requer a DLL fornecer duas interfaces e um ponteiro de método, descrito na seção a seguir. Se a função retornará falha o serviço não se voltará para o exportador fornecida pela Microsoft. Em vez disso, o serviço irá relatar a conversão como com falha.

Imsodocexporter

A interface IMsoDocExporter é idêntica à interface existente documentado no MSDN. Para obter mais informações, consulte Estendendo o recurso de exportação de formato fixo do Office 2007. Quando o método anterior retorna sucesso, essa interface executa a conversão. Além dos requisitos descritos no artigo mencionado anteriormente, os desenvolvedores de exportação com formato fixo DLLs devem estar cientes de que o serviço pode chamar o fornecido IMsoDocExporter em um segmento diferente no qual o serviço chamado HrGetDocExporter. A DLL deve ser capaz de lidar com isso sem empacotamento a chamada de volta para o thread que chamou HrGetDocExporter, porque o serviço não executa um bombeador e nunca receberá a chamada empacotada por meio de (resultando em um travar e falhas subseqüentes).

IMsoServerFileManagerSite

A interface de IMsoServerFileManagerSite é definida da seguinte maneira.

#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;
};

Esta interface expõe os métodos a seguir.

Tabela 2. Métodos expostos pela interface IMsoServerFileManagerSite**

Método Descrição
FGetHandle Obtém um identificador de arquivo.
FCloseHandle Libera um identificador de arquivo.

Essa interface não herda de IUnknown. Da mesma forma, a exportação com formato fixo DLL é permitida para sua vida útil manter uma referência a ele.

FGetHandle

O formato fixo exportar chamadas DLL esta função para obter os identificadores de arquivo para gravar. Ele não deve tentar abrir arquivos através de qualquer outro mecanismo porque o serviço é executado em um ambiente altamente restrito sem acessar a maioria dos locais no sistema de arquivos.

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

Tabela 3. Parâmetros FGetHandle**

Parâmetro Descrição
pwzFile Especifica o nome do arquivo de formato fixo exportar DLL deseja abrir. Isso não deve ser um caminho de arquivo completo — ela deve especificar apenas um nome de arquivo (por exemplo, Output.pdf).
phFile Especifica o identificador para o arquivo especificado, se o arquivo for aberto com êxito. A exportação com formato fixo DLL poderá então usar este identificador nas operações de arquivo normal até que ele feche chamando o método FCloseHandle.
Fread Especifica se o arquivo deve ser aberta com acesso de leitura.
Fwrite Especifica se o arquivo deve ser aberta com acesso de gravação. Essa função retorna TRUE para indicar êxito e FALSE para indicar a falha.

FCloseHandle

A exportação com formato fixo DLL chama esta função para fechar identificadores de arquivo obtidos por meio de chamadas para o método FGetHandle.

BOOL FCloseHandle (
  HANDLE phFile,
)

O parâmetro phFile especifica o identificador para o arquivo a ser fechado. Se o valor retornado por esse método for 0, a operação falhou. Todos os outros valores indicam êxito.

PFNKeepAlive

Quando a DLL de exportação de formato fixo estiver ativa, ela deve chamar a função KeepAlive em intervalos regulares (configuráveis pelo administrador) para impedir que o serviço supondo que a DLL de exportação de formato fixo não esteja respondendo e, assim, encerrando o processo. typedef void (*PFNKeepAlive)(void)

Confira também

Para saber mais, veja os seguintes recursos: