Após ativar o Microsoft Information Protection (MIP), muitos ambientes corporativos deixam de conseguir “Guardar/Salvar como PDF” a partir de um ficheiro/arquivo RTF no Word. Este guia explica o porquê e entrega soluções concretas — incluindo scripts — para padronizar o fluxo RTF ➜ DOCX ➜ PDF sem perder governança.
Visão geral do problema
Depois que as políticas de rotulagem/proteção do MIP entram em vigor, o Word passa a bloquear a exportação direta de .rtf para PDF. Ao tentar exportar, o Word exibe o aviso:
“Este tipo de ficheiro não é compatível com o Microsoft Information Protection. Converta primeiro o documento para um formato suportado.”
Esse bloqueio quebra rotinas manuais e automações (ex.: Office Interop) que, até então, abriam RTF no Word e exportavam diretamente para PDF. O motivo é técnico: o RTF não tem suporte nativo à rotulagem/encriptação do MIP; apenas formatos modernos do Office (DOCX, XLSX, PPTX) e o PDF gerado a partir deles preservam a integração plena com o MIP no Word. O RTF pode, no máximo, receber proteção “genérica” fora do Word (via SDK/ferramentas), mas isso não habilita a exportação direta dentro do Word.
Por que isso acontece (em termos práticos)
- MIP + Word: a integração do MIP no Word exige formatos com suporte para armazenar etiquetas de sensibilidade, metadados e, quando aplicável, encriptação. O ecossistema Office moderno usa o Open XML (DOCX) para isso.
- RTF é legado: RTF não foi desenhado para carregadores de rótulos sensíveis, políticas dinâmicas de proteção e metadados estruturados que o MIP precisa ler/escrever no cliente do Office.
- Resultado: com MIP ativo, o Word impede fluxos que possam “pular” a política — por exemplo, converter um RTF diretamente em PDF sem que os dados passem por um formato suportado e etiquetado. Daí o aviso e o bloqueio.
Como confirmar rapidamente que o MIP é a causa
- Abra um .rtf qualquer no Word (com MIP ativo) e tente “Guardar/Salvar como” ➜ PDF. Verá o aviso acima.
- Repita com o mesmo conteúdo convertido para .docx. Se a exportação para PDF funcionar, o bloqueio está relacionado ao suporte do formato sob MIP.
- Teste em uma máquina/perfil sem políticas MIP aplicadas (ex.: laboratório). Se o RTF ➜ PDF voltar a funcionar, a correlação é confirmada.
Soluções práticas (visão comparativa)
Caminho | Como fazer | Quando usar | Prós | Contras |
---|---|---|---|---|
Converter para DOCX antes de exportar | 1) Abrir o RTF no Word 2) SaveAs ➜ DOCX (formato suportado)3) ExportAsFixedFormat ➜ PDF | Opção padrão, compatível com operações manuais e automação (.NET/Interop/VBA/PowerShell). | Preserva rótulos MIP, auditabilidade e conformidade; solução estável e suportada. | Passo extra de conversão; pode haver pequenas diferenças de formatação dependendo do conteúdo. |
Ajustar a política MIP | Relaxar a aplicação para cenários com RTF (ex.: remover obrigatoriedade/autoaplicação de rótulos onde RTF é insumo), conforme o risco aceito pela organização. | Quando a unidade de negócio precisa manter RTF ➜ PDF direto (ex.: sistemas legados) e há aval de compliance. | Retoma o fluxo RTF ➜ PDF sem migração imediata de ferramentas. | Redução de cobertura/proteção em RTF; depende de aprovação de compliance e de governança rigorosa. |
Solicitar melhoria à Microsoft | Consolidar casos e enviar feedback pelos canais oficiais (tenant admin/support, comunidades técnicas). | Quando a organização quer suporte nativo e está disposta a aguardar. | Possível suporte no futuro, caso exista demanda suficiente. | Sem prazo/garantia; não resolve o problema imediato. |
Dica de código (Office Interop em C#)
// Conversão RTF -> DOCX -> PDF com Word Interop (suporta MIP nos formatos modernos)
using System;
using System.IO;
using Word = Microsoft.Office.Interop.Word;
class RtfToPdf
{
static int Main(string[] args)
{
if (args.Length < 1)
{
Console.Error.WriteLine("Uso: RtfToPdf ");
return 2;
}
```
var rtfPath = Path.GetFullPath(args[0]);
if (!File.Exists(rtfPath))
{
Console.Error.WriteLine("Ficheiro/arquivo não encontrado: " + rtfPath);
return 3;
}
var docxPath = Path.ChangeExtension(rtfPath, ".docx");
var pdfPath = Path.ChangeExtension(rtfPath, ".pdf");
Word.Application app = null;
Word.Document doc = null;
try
{
app = new Word.Application
{
Visible = false,
DisplayAlerts = Word.WdAlertLevel.wdAlertsNone
};
// Abrir RTF em modo de leitura para evitar prompts
doc = app.Documents.Open(rtfPath, ReadOnly: true, Visible: false);
// Converter para DOCX (formato suportado pelo MIP no Word)
doc.SaveAs2(docxPath, Word.WdSaveFormat.wdFormatDocumentDefault);
// Exportar para PDF (ajuste as opções conforme sua política)
doc.ExportAsFixedFormat(
OutputFileName: pdfPath,
ExportFormat: Word.WdExportFormat.wdExportFormatPDF,
OpenAfterExport: false,
OptimizeFor: Word.WdExportOptimizeFor.wdExportOptimizeForPrint,
Range: Word.WdExportRange.wdExportAllDocument,
From: 0, To: 0,
Item: Word.WdExportItem.wdExportDocumentContent,
IncludeDocProps: true,
KeepIRM: true, // mantém informações de gestão de direitos quando aplicável
CreateBookmarks: Word.WdExportCreateBookmarks.wdExportCreateHeadingBookmarks,
DocStructureTags: true,
BitmapMissingFonts: true,
UseISO19005_1: false // defina true se precisar de PDF/A-1
);
Console.WriteLine("PDF criado: " + pdfPath);
return 0;
}
catch (Exception ex)
{
Console.Error.WriteLine("Falha na conversão: " + ex.Message);
return 1;
}
finally
{
try { if (doc != null) doc.Close(Word.WdSaveOptions.wdDoNotSaveChanges); } catch { /* ignore */ }
try { if (app != null) app.Quit(); } catch { /* ignore */ }
}
}
```
}
Passo a passo detalhado
Manual (sem código)
- No Word, abra o RTF.
- Ficheiro/Arquivo ➜ Guardar/Salvar como ➜ escolha Documento do Word (*.docx) e conclua.
- Com o DOCX aberto, Ficheiro/Arquivo ➜ Exportar ➜ Criar Documento PDF/XPS (ou Guardar/Salvar como ➜ PDF).
Dica: se sua organização exige etiqueta MIP, aplique/valide a etiqueta no DOCX antes de gerar o PDF.
Automação em lote com PowerShell
Para ambientes Windows com Office instalado, este script converte todos os .rtf
de uma pasta (e subpastas) em .docx
e, em seguida, em .pdf
:
param(
[Parameter(Mandatory = $true)] [string]$Raiz
)
Constantes COM (evitam dependência de enums do Interop no PowerShell)
$wdFormatDocumentDefault = 16
$wdExportFormatPDF = 17
$wdDoNotSaveChanges = 0
$wdExportAllDocument = 0
$wdExportOptimizePrint = 0
$wdExportItemContent = 0
$wdBookmarksHeading = 1
$word = New-Object -ComObject Word.Application
$word.Visible = $false
$word.DisplayAlerts = 0
try {
Get-ChildItem -Path $Raiz -Filter *.rtf -Recurse | ForEach-Object {
$rtf = $_.FullName
$docx = [IO.Path]::ChangeExtension($rtf, ".docx")
$pdf = [IO.Path]::ChangeExtension($rtf, ".pdf")
```
Write-Host "Convertendo: $rtf"
$doc = $word.Documents.Open($rtf, $false, $true)
try {
$doc.SaveAs2($docx, $wdFormatDocumentDefault)
$doc.ExportAsFixedFormat(
$pdf, $wdExportFormatPDF, $false,
$wdExportOptimizePrint, $wdExportAllDocument, 0, 0,
$wdExportItemContent, $true, $true, $wdBookmarksHeading, $true, $true, $false
)
} finally {
$doc.Close($wdDoNotSaveChanges) | Out-Null
}
```
}
}
finally {
$word.Quit() | Out-Null
}
Boas práticas: execute em estação de trabalho dedicada (não em servidor), com Office licenciado e atualizado; garanta fontes e impressoras padrão instaladas (impactam o render do PDF); registre logs e trate exceções.
Automação com VBA (macro do Word)
Se você já está no Word, esta macro guia a conversão do documento aberto:
Sub RtfAtualParaPdf()
Dim doc As Document
Dim rtfPath As String, docxPath As String, pdfPath As String
```
If LCase(Right(ActiveDocument.Name, 4)) <> ".rtf" Then
MsgBox "Abra um ficheiro/arquivo RTF antes de executar.", vbExclamation
Exit Sub
End If
rtfPath = ActiveDocument.FullName
docxPath = Replace(rtfPath, ".rtf", ".docx", , , vbTextCompare)
pdfPath = Replace(rtfPath, ".rtf", ".pdf", , , vbTextCompare)
Set doc = ActiveDocument
doc.SaveAs2 FileName:=docxPath, FileFormat:=wdFormatDocumentDefault
doc.ExportAsFixedFormat _
OutputFileName:=pdfPath, ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, _
Range:=wdExportAllDocument, From:=0, To:=0, Item:=wdExportDocumentContent, _
IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:=wdExportCreateHeadingBookmarks, _
DocStructureTags:=True, BitmapMissingFonts:=True, UseISO19005_1:=False
MsgBox "PDF criado em: " & pdfPath, vbInformation
```
End Sub
Parâmetros de exportação em PDF (o que escolher)
Para padronizar a qualidade e a conformidade, estes parâmetros costumam ser relevantes:
Parâmetro | Opções | Recomendação | Observações |
---|---|---|---|
OptimizeFor | Print / OnScreen | Base mais estável para artes finais e impressão; “OnScreen” favorece telas. | |
IncludeDocProps | true/false | true | Preserva propriedades do documento; útil para auditoria e busca. |
CreateBookmarks | None / Headings / WordBookmarks | Headings | Gera marcadores a partir de títulos; melhora a navegação no PDF. |
DocStructureTags | true/false | true | Adiciona tags de estrutura (acessibilidade e leitores de ecrã/tela). |
BitmapMissingFonts | true/false | true | Evita substituição de fontes ausentes, renderizando como bitmap. |
UseISO19005_1 (PDF/A-1) | true/false | Conforme política | Se a retenção arquivística exigir, ative; teste por impacto em tamanho/recursos. |
KeepIRM | true/false | true | Quando aplicável, mantém metadados de gestão de direitos (IRM/MIP) no fluxo apropriado. |
Política e governança: quando (e como) ajustar o MIP
Se a sua organização precisa de fluxos com RTF ➜ PDF por razões legadas (sistemas que só exportam RTF, integrações antigas, etc.), avalie com a equipa de segurança/compliance:
- Escopo controlado: permitir exceções apenas para grupos/unidades que realmente necessitem de RTF, com revisão periódica.
- Desativar rótulo automático para RTF: onde possível, não exigir etiqueta obrigatória em conteúdos que venham de RTF — direcionando a migração para DOCX.
- Treinamento: orientar utilizadores a sempre converter para DOCX e só então gerar o PDF, aplicando a etiqueta MIP necessária no DOCX.
- Monitorização: auditar conversões e downloads, e medir o progresso de migração para formatos suportados.
Nota: “Imprimir para PDF” (via driver de impressão) pode contornar o bloqueio, mas em geral descarta metadados MIP e pode violar políticas de DLP. Trate como exceção, não como padrão.
Proteção fora do Word (linha de comando/serviços)
Se o objetivo for apenas proteger o ficheiro RTF fora do Word (ex.: aplicar rótulo/encriptação via scanner/serviço), ferramentas e SDKs do ecossistema (AIP/Purview) podem rotular/criptografar conteúdos em massa. Isso não altera o comportamento do Word: a aplicação continuará sem permitir RTF ➜ PDF com MIP ativo. Use esta abordagem para governança de acervo, não para conversão no cliente do Word.
Qualidade de conversão: como evitar surpresas
- Fontes e drivers: garanta que as fontes corporativas e um driver de impressão padrão existam na máquina de conversão.
- Objetos OLE e caixas de texto: alguns objetos (desenhos, equações, OLE) podem ajustar posicionamento ao migrar de RTF para DOCX. Teste amostras reais.
- Idiomas e hifenização: instale pacotes de idiomas necessários; afeta quebra de linha/hifenização no PDF.
- Revisões: se o documento usa “Controlar Alterações”, defina se o PDF deve mostrar marcações (Item:
wdExportDocumentWithMarkup
) ou o conteúdo final.
Desenho de pipeline (CI/CD) e testes de regressão
Ao versionar aplicações que montam documentos e os convertem, inclua testes automatizados:
- Casos mínimos: RTF simples ➜ DOCX ➜ PDF (com e sem etiqueta MIP).
- Casos ricos: RTF com tabelas, imagens, cabeçalho/rodapé, estilos, objetos e equações.
- Comparação visual: use diffs de PDF/bitmap para medir variações de layout.
- Métricas: tempo de execução, tamanho do PDF, presença de marcadores, tags de estrutura.
- Política: verifique se o DOCX recebe/apresenta a etiqueta correta e se o PDF resultante atende aos requisitos (ex.: PDF/A, doc props, acessibilidade).
Perguntas frequentes (FAQ)
Posso forçar o Word a exportar RTF ➜ PDF mesmo com MIP ativo? Não de forma suportada. O caminho suportado é converter para DOCX e, a partir dele, exportar para PDF. “Imprimir para PDF” resolve? Pode gerar um arquivo PDF, mas normalmente perde metadados MIP e pode violar regras internas de DLP. Use apenas se a política permitir, e ciente dos riscos. Existe alguma biblioteca que converta RTF ➜ PDF sem o Word? Há bibliotecas de terceiros para conversão, mas não integram o MIP do Word. Se o requisito é aderir ao MIP no cliente Office, o percurso suportado continua sendo RTF ➜ DOCX ➜ PDF no Word. Isso afeta apenas o Word no Windows? O comportamento descrito é do Word com MIP. Interop/COM e scripts aqui mostrados são específicos de Windows. Em outras plataformas, a recomendação de fluxo (migrar para DOCX e exportar) permanece.
Checklist de implementação
- Defina o padrão corporativo: RTF ➜ DOCX ➜ PDF.
- Atualize procedimentos internos e guias para utilizadores.
- Entregue scripts/modelos (C#, PowerShell, VBA) prontos para uso.
- Opcional: ajuste políticas MIP para exceções temporárias (com aprovação formal).
- Implemente testes de regressão em CI/CD.
- Monitore adoção e remova exceções à medida que sistemas legados forem migrados.
Resumo executivo
- O bloqueio é esperado: RTF não é suportado pelo MIP no Word.
- Padrão de mercado e recomendação: converter para DOCX e só então exportar para PDF.
- “Imprimir para PDF” e conversores de terceiros não substituem a integração com o MIP; use apenas se a política aceitar o risco.
- Automatize com Interop/VBA/PowerShell e inclua testes para garantir qualidade e conformidade.
- Só a Microsoft pode adicionar suporte nativo; até lá, ajuste políticas (com governança) ou adapte o fluxo de trabalho.
Apêndice — exemplo enxuto (Interop C#)
using Word = Microsoft.Office.Interop.Word;
var app = new Word.Application { Visible = false, DisplayAlerts = Word.WdAlertLevel.wdAlertsNone };
var doc = app.Documents.Open(@"C:\temp\input.rtf", ReadOnly: true, Visible: false);
doc.SaveAs2(@"C:\temp\output.docx", Word.WdSaveFormat.wdFormatDocumentDefault);
doc.ExportAsFixedFormat(@"C:\temp\output.pdf", Word.WdExportFormat.wdExportFormatPDF);
doc.Close(Word.WdSaveOptions.wdDoNotSaveChanges);
app.Quit();
Apêndice — mapeamento de constantes úteis
Enum | Nome | Valor | Uso |
---|---|---|---|
WdSaveFormat | wdFormatDocumentDefault | 16 | Salvar como DOCX |
WdExportFormat | wdExportFormatPDF | 17 | Exportar como PDF |
WdExportOptimizeFor | wdExportOptimizeForPrint | 0 | PDF otimizado para impressão |
WdExportRange | wdExportAllDocument | 0 | Documento inteiro |
WdExportItem | wdExportDocumentContent | 0 | Somente conteúdo |
WdExportCreateBookmarks | wdExportCreateHeadingBookmarks | 1 | Marcadores a partir de títulos |
WdSaveOptions | wdDoNotSaveChanges | 0 | Fechar sem salvar |
Conclusão: para manter conformidade e reduzir atrito operacional em ambientes com MIP, institucionalize o caminho RTF ➜ DOCX ➜ PDF com automação e testes. É simples, suportado e previsível.