heulendoch
Ensign
- Registriert
- Feb. 2014
- Beiträge
- 252
Hallo zusammen,
ich habe ein Dokument, es wurden darin folgende Schriften verwendet:
Calibri Light, Courier New, Times New Roman, Cambria
Beispielhaft möchte ich die Schriften durch Arial tauschen. Das klappt auch bei Courier New und bei Cambria, bei den anderen aber nicht.
Leider komme ich einfach nicht drauf, weshalb es bei den anderen zwei Schriften nicht klappt?
Falls jemand ein paar Vorschläge hat, wäre super. Danke!
ich habe ein Dokument, es wurden darin folgende Schriften verwendet:
Calibri Light, Courier New, Times New Roman, Cambria
C#:
public HashSet<string> GetUsedFonts(Document document) {
var UsedFonts = new HashSet<string>();
foreach(var CurrentParagraph in document.Paragraphs) {
for(int i = 1; i <= CurrentParagraph.Range.Characters.Count; i++) {
UsedFonts.Add(CurrentParagraph.Range.Characters[i].Font.Name);
}
}
return UsedFonts;
}
Beispielhaft möchte ich die Schriften durch Arial tauschen. Das klappt auch bei Courier New und bei Cambria, bei den anderen aber nicht.
C#:
public void ReplaceFonts() {
var DocumentRange = WordApp.ActiveDocument.Range();
//ReplaceFont(DocumentRange, "Cambria", "Times New Roman");
//ReplaceFont(DocumentRange, "Calibri Light", "Times New Roman");
//ReplaceFont(DocumentRange, "Courier New", "Times New Roman");
ReplaceFont(DocumentRange, "Calibri Light", "Arial");
ReplaceFont(DocumentRange, "Courier New", "Arial");
ReplaceFont(DocumentRange, "Times New Roman", "Arial");
ReplaceFont(DocumentRange, "Cambria", "Arial");
DocumentRange.Find.ClearFormatting();
DocumentRange.Find.Replacement.ClearFormatting();
}
private bool ReplaceFont(Range currentRange, string oldFont, string newFont) {
currentRange.Select();
currentRange.Find.ClearFormatting();
currentRange.Find.Font.Name = oldFont;
currentRange.Find.Replacement.ClearFormatting();
currentRange.Find.Replacement.Font.Name = newFont;
object arg1 = Missing.Value; //Find Pattern
object arg2 = Missing.Value; //MatchCase
object arg3 = Missing.Value; //MatchWholeWord
object arg4 = Missing.Value; //MatchWildcards
object arg5 = Missing.Value; //MatchSoundsLike
object arg6 = Missing.Value; //MatchAllWordForms
object arg7 = Missing.Value; //Forward
object arg8 = Missing.Value; //Wrap
object arg9 = Missing.Value; //Format
object arg10 = Missing.Value; //ReplaceWith
object arg11 = WdReplace.wdReplaceAll; //Replace
object arg12 = Missing.Value; //MatchKashida
object arg13 = Missing.Value; //MatchDiacritics
object arg14 = Missing.Value; //MatchAlefHamza
object arg15 = Missing.Value; //MatchControl
var Result = currentRange.Find.Execute(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, arg15);
if (Result) {
Console.WriteLine("Ersetzung von " + oldFont + " erfolgt");
}
return Result;
}
Leider komme ich einfach nicht drauf, weshalb es bei den anderen zwei Schriften nicht klappt?
Falls jemand ein paar Vorschläge hat, wäre super. Danke!