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:
- 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 |
---|---|
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: