Я пытаюсь получить все используемые шрифты и шрифты полужирного текста во многих файлах docx.
Теперь я могу получить все используемые шрифты, распаковать файл docx и прочитать fontTable.xml.
if (fontfile.Name.Equals("fontTable.xml"))
{
using (StreamReader sr = new StreamReader(fontfile.FullName, Encoding.UTF8))
{
string content = sr.ReadToEnd();
string pattern = "<w:font w:name=.+?>";
Regex reg = new Regex(pattern);
MatchCollection matches = reg.Matches(content);
foreach (Match match in matches)
{
string fontname = match.ToString().Replace("<w:font w:name=\"","").Replace("\">","");
fontlist.Add(fontname);
}
}
break;
}
Но я не знаю, как получить жирный шрифт.Я попытался распаковать файл docx и получить шрифт полужирного текста в document.xml, но не могу найти связь между document.xml и fontTable.xml.
В fontTable.xml я могу найти имена используемых шрифтов текущего файла,но без жирной информации.
<w:font w:name="Calibri"><w:panose1 w:val="020F0502020204030204"/><w:charset w:val="00"/><w:family w:val="swiss"/><w:pitch w:val="variable"/><w:sig w:usb0="E0002AFF" w:usb1="C000247B" w:usb2="00000009" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000"/></w:font>
Я могу найти жирную информацию в document.xml с тегом "w: b /" или "w: bCs /" в теге "w: r".Но нет имени шрифта в document.xml
<w:r w:rsidRPr="00C22891"><w:rPr><w:rFonts w:hint="eastAsia"/><w:b/><w:bCs/></w:rPr><w:t>加粗</w:t></w:r>
Я попробовал Microsoft.office.interop, если я ищу файл с bold== true
и именем шрифта, isFind
всегда false
.
app.Selection.Find.Font.Bold = -1; //true
//app.Selection.Find.ClearFormatting();
app.Selection.Find.Font.NameAscii = fontname;
app.Selection.Find.Forward = true;
isFind = app.Selection.Find.Execute("", nothing, nothing, nothing, nothing, nothing, app.Selection.Find.Forward, nothing,
app.Selection.Find.Font.Bold, nothing, nothing, nothing, nothing, nothing, nothing);
if (isFind)
{
font_list_bold.Add(fontname + "+Bold");
}
Поэтому мне интересно, есть ли способ получить все шрифты, выделенные жирным шрифтом в Word
Заранее благодарен за помощь.