IronWord에서 저장 시 헤더 사라짐
SaveAs()를 표준 저장 호출로 사용하며 헤더 손실이 보고되지 않았습니다. 확인된 제품 결함이 아니라 환경별 특이 사항일 수 있는 것으로 간주하고, 아래 해결 방법을 적용하기 전에 사용자 환경에서 확인하세요.일부 환경에서는 IronWord로 DOCX 템플릿을 채우고 SaveAs()로 결과를 저장할 때, 자리 표시자가 올바르게 병합되더라도 생성된 파일에서 템플릿의 헤더가 사라지는 것이 관찰되었습니다.
Header (e.g. "City Attorney Cover Sheet") is visible in the original DOCX
but missing in the generated file after calling SaveAs().

이 문제가 관찰된 환경에서는 SaveAs() 대신 Save()로 문서를 작성했을 때 헤더가 유지되었습니다. 이는 다른 환경이나 IronWord의 변경 로그에서 확인되지 않았습니다 — 다른 IronWord 가이드는 SaveAs()를 표준 저장 호출로 사용해도 헤더 손실 문제가 없으므로, 확인된 제품 결함이 아니라 환경별 사항으로 간주하세요.
해결책
1. 템플릿 로드하기
WordDocument으로 소스 DOCX를 엽니다.
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. 자리 표시자 교체
템플릿 교체의 권장 접근 방식인 doc.Texts으로 값을 병합하세요.
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
doc.Texts를 반복하여 텍스트 본문 전체에 있는 모든 자리 표시자 토큰을 병합 값으로 교체하세요.
3. SaveAs()가 아닌 Save()로 저장하기
이 문제가 관찰된 환경에서는 출력을 doc.Save(outputPath)로 작성하면 헤더가 그대로 유지되었고, doc.SaveAs(outputPath)는 이를 제거했습니다. 이를 시도해 볼 해결 방법으로 간주하고, 두 메서드 간의 확인된 보편적 동작 차이로 간주하지 마세요.
doc.Save(outputPath);
doc.Save(outputPath);
doc.Save(outputPath)

메모
작업 흐름에서 SaveAs()가 필요한 경우: 최신 IronWord 버전에서 헤더가 해당 환경에서 정상적으로 유지되는지 확인하세요.
문제가 다시 발생할 경우: 행동이 조사되는 동안 임시 완화책으로 이전에 작동하던 버전으로 고정하세요.

