El Encabezado Desaparece Tras GuardarComo en IronWord
SaveAs() como su llamada de guardado estándar sin ninguna pérdida de encabezado reportada. Trata esto como una posible peculiaridad específica del entorno, y no como un defecto confirmado del producto, y verifícalo en tu propio entorno antes de aplicar la solución alternativa a continuación.En algunos entornos, al llenar una plantilla DOCX con IronWord y escribir el resultado con SaveAs(), se ha observado que el encabezado de la plantilla desaparece del archivo generado, aunque los marcadores de posición se combinen correctamente.
Header (e.g. "City Attorney Cover Sheet") is visible in the original DOCX
but missing in the generated file after calling SaveAs().

En el entorno donde se observó esto, el encabezado se conservó al escribir el documento con Save() en lugar de con SaveAs(). Esto no se ha corroborado en otros entornos ni en el changelog de IronWord: otras guías de IronWord usan SaveAs() como su llamada de guardado estándar sin problemas de pérdida de encabezado, por lo que trata esto como algo específico del entorno y no como un defecto confirmado del producto.
Solución
1. Cargue la Plantilla
Abre el DOCX fuente con WordDocument.
using IronWord;
using System.Collections.Generic;
var templatePath = @"C:\Templates\CityAttorneyCoverSheetTemplate.docx";
var outputPath = @"C:\Output\merged.docx";
var doc = new WordDocument(templatePath);
using IronWord;
using System.Collections.Generic;
var templatePath = @"C:\Templates\CityAttorneyCoverSheetTemplate.docx";
var outputPath = @"C:\Output\merged.docx";
var doc = new WordDocument(templatePath);
Imports IronWord
Imports System.Collections.Generic
Dim templatePath As String = "C:\Templates\CityAttorneyCoverSheetTemplate.docx"
Dim outputPath As String = "C:\Output\merged.docx"
Dim doc As New WordDocument(templatePath)
2. Reemplace los Marcadores de Posición
Combina tus valores a través de doc.Texts, que es el enfoque recomendado para el reemplazo de plantillas.
var replacements = new Dictionary<string, string>
{
["{CaseNumber}"] = "2026-CR-12345",
["{DefendantName}"] = "John Doe",
["{DefendantAge}"] = "34",
["{DefendantAttorney}"] = "Jane Smith",
};
foreach (var kv in replacements)
{
doc.Texts.ForEach(t => t.Replace(kv.Key, kv.Value));
}
var replacements = new Dictionary<string, string>
{
["{CaseNumber}"] = "2026-CR-12345",
["{DefendantName}"] = "John Doe",
["{DefendantAge}"] = "34",
["{DefendantAttorney}"] = "Jane Smith",
};
foreach (var kv in replacements)
{
doc.Texts.ForEach(t => t.Replace(kv.Key, kv.Value));
}
Imports System.Collections.Generic
Dim replacements As New Dictionary(Of String, String) From {
{"{CaseNumber}", "2026-CR-12345"},
{"{DefendantName}", "John Doe"},
{"{DefendantAge}", "34"},
{"{DefendantAttorney}", "Jane Smith"}
}
For Each kv In replacements
doc.Texts.ForEach(Sub(t) t.Replace(kv.Key, kv.Value))
Next
Iterar cada entrada sobre doc.Texts intercambia cada marcador de posición por su valor de combinación en todo el cuerpo del documento.
3. Guarda con Save(), no con SaveAs()
En el entorno donde se observó este problema, escribir la salida con doc.Save(outputPath) mantuvo el encabezado intacto, mientras que doc.SaveAs(outputPath) lo eliminó. Trata esto como una solución alternativa para probar, no como una diferencia de comportamiento universal confirmada entre los dos métodos.
doc.Save(outputPath);
doc.Save(outputPath);
doc.Save(outputPath)

Notas
- Si tu flujo de trabajo requiere
SaveAs(): verifica en la última versión de IronWord si el encabezado sobrevive en tu entorno. - Si el problema reaparece: ancle a una versión previamente funcional como mitigación a corto plazo mientras se investiga el comportamiento.

