Как найти название шрифта жирным шрифтом в Word с помощью C # - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь получить все используемые шрифты и шрифты полужирного текста во многих файлах 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

Заранее благодарен за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...