我正在尝试在许多docx文件中获取所有使用的字体和粗体文本的字体。
现在我可以通过解压缩docx文件获取所有使用的字体并读取fontTable.xml。
select f.uid, u.name
from fav_dessert f
inner join user u on f.uid=u.uid
inner join (
select dessert_id
from fav_dessert
group by dessert_id
having count(distinct uid)>1
) t on t.dessert_id = f.dessert_id
但是我不知道如何获得粗体字的字体。 我尝试解压缩docx文件并在document.xml中获得粗体文本的字体,但是找不到document.xml和fontTable.xml之间的连接。
在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;
}
我可以在document.xml中使用“ w:r”标签中的“ w:b /”或“ w:bCs /”找到粗体信息。 但是document.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>
我尝试使用Microsoft.office.interop,如果我使用<w:r w:rsidRPr="00C22891"><w:rPr><w:rFonts w:hint="eastAsia"/><w:b/><w:bCs/></w:rPr><w:t>加粗</w:t></w:r>
和字体名称搜索文件,则bold== true
始终为isFind
。
false
所以我想知道是否有办法在Word中获取所有粗体字体
预先感谢您的帮助。