Partager via


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

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