Convertir RTF en PDF sous Microsoft Information Protection : solutions Word, Interop et bibliothèques tierces

Lorsque Microsoft Information Protection (MIP) est activé, Word bloque la conversion directe d’un fichier RTF en PDF : « This file type doesn’t support Microsoft Information Protection. You must first convert the document to a supported format. » Voici un guide complet pour continuer à produire des PDF en restant conforme aux règles de sécurité.

Sommaire

Vue d’ensemble

Historiquement, de nombreuses applications .NET s’appuient sur Microsoft.Office.Interop.Word pour convertir automatiquement des RTF en PDF. L’activation des stratégies MIP casse ce flux : Word exige désormais que le document soit dans un format compatible avec l’étiquetage et, le cas échéant, le chiffrement. Le RTF, format hérité de 1987, ne contient pas les conteneurs XML nécessaires aux métadonnées de classification ou au chiffrement RMS ; Word bloque donc l’export.

Comparatif rapide des approches possibles

ApprocheÉtapes essentiellesAvantagesLimites
Conversion RTF → DOCX → PDF (recommandé)1. Ouvrir le RTF dans Word.
2. Enregistrer sous DOCX.
3. Vérifier/appliquer l’étiquette MIP.
4. Ré‑ouvrir le DOCX et exporter en PDF (ExportAsFixedFormat).
Format DOCX totalement pris en charge par MIP ; automatisable ; aucune modification des stratégies de sécurité.Deux opérations d’I/O au lieu d’une ; légère pénalité de performance ; risque minime de variation de mise en page si le RTF contenait des balises obsolètes.
Désactiver temporairement MIPSuspendre l’étiquetage le temps de la conversion (GPO, paramètre registre ou argument CLI).Permet de conserver le pipeline existant sans le modifier.Non‑conformité potentielle ; fenêtre de tir durant laquelle les documents sont non protégés ; généralement inacceptable en production.
Bibliothèque tierce sans Word (Aspose.Words, Syncfusion DocIO, etc.)Charger le RTF dans la bibliothèque → appeler la méthode d’export PDF.Ne nécessite pas Office sur le serveur ; contournement propre de la limitation MIP ; performances souvent supérieures.Coût de licence ; les PDF sortants ne porteront aucune étiquette MIP – valider la conformité réglementaire.
Escalade auprès de MicrosoftOuvrir un ticket Microsoft 365, voter sur les canaux Feedback.Fait évoluer la feuille de route produit.Pas de solution immédiate ; gain incertain.

Pourquoi Word interdit‑il le RTF sous MIP ?

Le moteur MIP a besoin d’un conteneur capable de stocker :

  • l’ID d’étiquette (SensitivityLabelId) ;
  • la protection RMS (enveloppe de chiffrement) ;
  • l’historique des actions en clair (audit).

Le RTF ne possède aucune de ces structures ; Word refuse donc l’export pour éviter une « perte » de protection. La même restriction s’applique aux formats hérités .doc, .xls, .ppt et à l’impression virtuelle (Microsoft Print to PDF) lorsque l’étiquetage est obligatoire.

Implémentation C# pas à pas

// using Word = Microsoft.Office.Interop.Word;
var app = new Word.Application
{
    Visible = false,
    ScreenUpdating = false
};
try
{
    // 1) Conversion RTF → DOCX
    Word.Document rtfDoc = app.Documents.Open(rtfPath, ReadOnly: true, Visible: false);
    string tmpDocx = Path.ChangeExtension(rtfPath, ".docx");
    rtfDoc.SaveAs2(tmpDocx, Word.WdSaveFormat.wdFormatDocumentDefault);
    rtfDoc.Close(SaveChanges: false);

```
// 2) Application ou vérif. de l’étiquette
Word.Document docx = app.Documents.Open(tmpDocx, ReadOnly: false, Visible: false);
// Exemple : forcer l’étiquette « Confidentiel »
// docx.SensitivityLabelId = &quot;<GUID_de_l_etiquette>&quot;;

// 3) Export PDF
docx.ExportAsFixedFormat(pdfPath,
    Word.WdExportFormat.wdExportFormatPDF,
    OpenAfterExport: false,
    OptimizeFor: Word.WdExportOptimizeFor.wdExportOptimizeForPrint,
    Item: Word.WdExportItem.wdExportDocumentContent);

docx.Close(SaveChanges: false);
```

}
finally
{
app.Quit();
Marshal.ReleaseComObject(app);
} 

Points de vigilance

  • Clean‑up : supprimez systématiquement le DOCX temporaire pour éviter la prolifération de fichiers intermédiaires.
  • Exceptions MIP : interceptez COMException 0x800A16DC (Word cannot save as PDF) pour détecter un éventuel manque d’étiquette ou une politique Mandatory Labeling.
  • Performance : dans un service Windows, conservez l’instance Word ouverte et traitez les fichiers par lot (jusqu’à quelques centaines) pour réduire le coût du démarrage COM ; nettoyez la mémoire (GC.Collect()) toutes les N conversions.
  • Parallélisme : Word n’est pas thread‑safe ; isolez la conversion dans un process dédié si vous avez plusieurs files d’attente asynchrones.

Option : bibliothèques tierces

Si l’exécution d’Office sur le serveur est impossible ou si vous visez des temps de conversion inférieurs à 100 ms, envisagez une bibliothèque dédiée :

  • Aspose.Words : var doc = new Document(rtfPath); doc.Save(pdfPath, SaveFormat.Pdf);
  • Syncfusion DocIO : WordDocument doc = new WordDocument(rtfPath); DocIORenderer renderer = new DocIORenderer(); PdfDocument pdf = renderer.ConvertToPDF(doc);
  • LibreOffice headless (CLI) : soffice --headless --convert-to pdf --outdir "." "input.rtf"

Avantages majeurs : absence de dépendance COM, déploiements conteneurisés plus simples, scalabilité horizontale. Inconvénients : coût de licence (dans le cas d’Aspose/Syncfusion) et absence d’étiquetage MIP intégré ; les documents PDF générés seront donc « non classifiés ».

Tests & validation

Jeu de tests minimal

CasRésultat attenduMéthode de validation
RTF sans étiquette → DOCX → PDFAucune erreur, PDF généré, pas d’étiquette si non obligatoireOuvrir le PDF ; vérifier l’absence de watermark et les métadonnées
RTF avec Mandatory LabelingBlocage Word jusqu’à assignation d’une étiquetteIntercepter le code erreur, assigner l’étiquette, relancer l’export
RTF chiffré par RMS (hors MIP)Ouverture impossible ; la conversion doit échouerTracer l’exception COM 0x800A16DC ou 0x800A15BF

Audit et conformité

Même si le PDF final est en clair, l’action « Enregistrer sous » est journalisée dans le Unified Audit Log Microsoft 365 : recherchez l’opération FileSavedAsPDF pour valider que la conversion respecte la politique. Vous pouvez également exiger une re‑classification du PDF après conversion via Sensitivity Labeling Auto‑Label Policies.

FAQ

Le passage RTF → DOCX change‑t‑il la pagination ? En général non, mais certains champs RTF (ex. tables imbriquées anciennes) sont mis à jour lors de l’ouverture ; effectuez un test visuel si votre mise en page est critique. Existe‑t‑il un paramètre de registre pour réactiver l’export RTF → PDF ? Non ; la vérification est intégrée au moteur MIP de Word et n’est pas contournable par registre ou GPO sans désactiver totalement MIP. Puis‑je utiliser Microsoft Print to PDF ? Si l’étiquetage est défini comme « obligatoire » et qu’aucune étiquette n’est appliquée, l’impression vers PDF sera également bloquée. Avec une étiquette valide, l’impression passe mais le PDF n’hérite pas de la classification : prudence ! Qu’en est‑il d’Office Online (Word sur le web) ? La version web n’exporte pas nativement en PDF les fichiers RTF ; elle convertit d’abord en DOCX côté serveur, exactement comme le flux proposé ici.

Bonnes pratiques supplémentaires

  • Séparez la zone de dépôt RTF (non étiquetée) de la zone de stockage des PDF étiquetés ; appliquez des autorisations distinctes.
  • Documentez la chaîne de responsabilité : qui a le droit de passer du RTF au DOCX, qui peut appliquer l’étiquette, qui valide le PDF final.
  • Automatisez la suppression des fichiers intermédiaires via Storage Lifecycle pour éviter l’accumulation de données sensibles non protégées.
  • Dans Azure DevOps, paramétrez un pipeline dédié “rtf-pdf-conversion” avec des tests unitaires mockés pour chaque version d’Office que vous supportez.
  • Gardez à jour l’environnement Office : Word 2021 LTSC ou Microsoft 365 semi‑annual channel contiennent des correctifs de stabilité pour ExportAsFixedFormat.

Conclusion

Le blocage de Word n’est pas un bug : c’est une mesure visant à empêcher la perte de métadonnées sensibles. La solution la plus sûre et la plus rapide est d’insérer une conversion RTF → DOCX avant l’export PDF. Cette étape garantit la compatibilité avec MIP sans compromettre la sécurité. Pour les scénarios serveur ou conteneurisés, les bibliothèques tierces offrent une alternative performante, à condition de gérer la classification des PDF finis. Enfin, signalez vos besoins à Microsoft pour encourager un éventuel support futur du format RTF.

Sommaire