SaveAs Sonrası Başlık Kayboluyor IronWord'de
SaveAs()'i standart kaydetme çağrısı olarak kullanıyor ve bildirilen bir başlık kaybı yok. Bunu, onaylanmış bir ürün kusuru değil, ortama özgü olası bir tuhaflık olarak değerlendirin ve aşağıdaki geçici çözümü uygulamadan önce kendi ortamınızda doğrulayın.Bazı ortamlarda, bir DOCX şablonunu IronWord ile doldurup sonucu SaveAs() ile yazdığınızda, yer tutucular doğru şekilde birleşse bile şablonun başlığının oluşturulan dosyadan kaybolduğu gözlemlenmiştir.
Header (e.g. "City Attorney Cover Sheet") is visible in the original DOCX
but missing in the generated file after calling SaveAs().

Bunun gözlemlendiği ortamda, belge SaveAs() yerine Save() ile yazıldığında başlık korunmuştur. Bu, diğer ortamlarda veya IronWord'ün değişiklik günlüğünde doğrulanmamıştır — diğer IronWord kılavuzları SaveAs()'i standart kaydetme çağrısı olarak kullanır ve başlık kaybı sorunu yaşamaz, bu nedenle bunu onaylanmış bir ürün kusuru değil, ortama özgü olarak değerlendirin.
Çözüm
1. Şablonu Yükleyin
Kaynak DOCX dosyasını WordDocument ile açın.
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. Yer Tutucuları Değiştirin
Şablon değiştirme için önerilen yaklaşım olan doc.Texts aracılığıyla değerlerinizi birleştirin.
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 üzerindeki her girişi yinelemek, belge gövdesindeki her yer tutucu simgesini birleşim değeriyle değiştirir.
3. Save(), SaveAs() Değil İle Kaydedin
Bu sorunun gözlemlendiği ortamda, çıktıyı doc.Save(outputPath) ile yazmak başlığı sağlam tuttu, doc.SaveAs(outputPath) ise onu düşürdü. Bunu denenecek bir geçici çözüm olarak değerlendirin, iki yöntem arasında doğrulanmış evrensel bir davranış farkı olarak değil.
doc.Save(outputPath);
doc.Save(outputPath);
doc.Save(outputPath)

Notlar
- Çalışma süreciniz
SaveAs()gerektiriyorsa: başlığın ortamınızda korunup korunmadığını en son IronWord sürümünde gözden geçirin. - Sorun yeniden ortaya çıkarsa: davranış incelenirken, kısa vadeli bir çözüm olarak daha önce çalışan bir sürüme sabitleyin.

