Étendre la fonctionnalité Exporter au format fixe dans Word Automation Services
Étendre Word Automation Services dans Microsoft Office 2013 pour remplacer la bibliothèque utilisée par la fonctionnalité d'exportation au format fixe.
Fonctionnalité d'exportation de présentation de la conversion service fixe-format de fichier Word
Cet article explique comment étendre la fonctionnalité d'exportation au format fixe d' Word Automation Services à utiliser des DLL d'exportation au format fixe différentes, afin que les développeurs tiers peuvent remplacer celles fournies par Microsoft. Ce mécanisme nécessite et étend le client Office interface COM de l'extensibilité au format fixe. Pour plus d'informations, voir extension de la fonctionnalité d'exportation Office 2007 au Format fixe.
Découverte
Word Automation Services permet aux développeurs tiers remplacer un ou les deux des sorties au format fixe pris en charge :
- XPS
Pour remplacer chaque format, la DLL doit se trouver dans le même répertoire que la bibliothèque principale (Sword.dll) pour Word Automation Services (chemin d’installation : root\WebServices\ConversionService\Bin\Converter) et doit avoir le nom de fichier spécifique spécifié dans le tableau 1.
Tableau 1. Noms de fichiers pour les DLL d’exportation au format fixe
Format | Nom de fichier |
---|---|
Renderpdf.dll | |
XPS | Renderxps.dll |
Initialisation
La DLL doit exporter une méthode avec la signature suivante.
HRESULT HrGetDocExporter (
IMsoDocExporter **ppimde,
IMsoServerFileManagerSite *psfms,
PFNKeepAlive pfnKeepAlive
)
La fonction nécessite la DLL à fournir des deux interfaces et un pointeur de méthode, décrites dans la section suivante. Si la fonction renvoie l'erreur dans le service pas revient à l'exportateur fournis par Microsoft. Au lieu de cela, le service signalera la conversion comme ayant échoué.
IMsoDocExporter
L'interface IMsoDocExporter est identique à l'interface existante décrite sur MSDN. Pour plus d'informations, voir extension de la fonctionnalité d'exportation Office 2007 au Format fixe. Lorsque la méthode précédente retourne une valeur Réussite, cette interface effectue la conversion. Au-delà de la configuration requise décrite dans l'article susmentionné, les développeurs d'exportation au format fixe DLL doivent prendre en charge que le service peut appeler la fourniture IMsoDocExporter sur un thread différent de celui sur lequel le service appelé HrGetDocExporter. La DLL doit être en mesure de gérer ce sans marshaling de l'appel vers le thread qui a appelé HrGetDocExporter, car le service ne s'exécute pas une pompe de messages et de l'appel marshalé obtiendrez jamais via (entraînant un blocage et les défaillances suivantes).
IMsoServerFileManagerSite
L'interface IMsoServerFileManagerSite est défini comme suit.
#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;
};
Cette interface expose les méthodes suivantes.
Tableau 2. Méthodes exposées par l’interface IMsoServerFileManagerSite**
Méthode | Description |
---|---|
FGetHandle | Obtient un descripteur de fichier. |
FCloseHandle | Libère un descripteur de fichier. |
Cette interface n'hérite pas de IUnknown. En conséquence, l'exportation au format fixe DLL est autorisée à conserver une référence à celle-ci pour sa durée de vie.
FGetHandle
Le format fixe exporter DLL appelle cette fonction pour obtenir des descripteurs de fichiers pour écrire. Il ne doit pas essayer d'ouvrir des fichiers par le biais de n'importe quel autre mécanisme, car le service s'exécute dans un environnement hautement restreint sans accès à la plupart des emplacements dans le système de fichiers.
BOOL FGetHandle (
const WCHAR *pwzFile,
HANDLE *phFile,
BOOL fRead,
BOOL fWrite
)
Tableau 3. Paramètres FGetHandle**
Paramètre | Description |
---|---|
pwzFile | Spécifie le nom du fichier du format fixe exporter DLL souhaite ouvrir. Il ne doit pas être un chemin d'accès complet du fichier, il doit spécifier uniquement un nom de fichier (par exemple, Output.pdf). |
phFile | Spécifie le handle vers le fichier spécifié, si le fichier est ouvert avec succès. L'exportation au format fixe DLL peut ensuite utiliser ce HANDLE dans les opérations de fichier normal jusqu'à ce qu'elle le ferme en appelant la méthode FCloseHandle. |
fRead | Spécifie si le fichier doit être ouvert avec un accès en lecture. |
Fwrite | Spécifie si le fichier doit être ouvert avec un accès en écriture. Cette fonction renvoie la valeur TRUE pour indiquer le succès et FALSE pour indiquer l'échec. |
FCloseHandle
L'exportation au format fixe DLL appelle cette fonction pour fermer des descripteurs de fichiers obtenus via des appels à la méthode FGetHandle.
BOOL FCloseHandle (
HANDLE phFile,
)
Le paramètre phFile spécifie le handle du fichier à fermer. Si la valeur renvoyée par cette méthode est 0, l'opération a échoué. Toutes les autres valeurs indiquent le succès.
PFNKeepAlive
Lorsque la DLL d’exportation au format fixe est active, elle doit appeler la fonction KeepAlive à intervalles réguliers (configurable par l’administrateur) pour empêcher le service de supposer que la DLL d’exportation au format fixe ne répond pas et donc de mettre fin au processus.
typedef void (*PFNKeepAlive)(void)
Voir aussi
Pour plus d’informations, consultez les ressources suivantes :