使用MuPDF库从PDF中提取内容时,我得到的字体名称不仅仅是字体。
我猜(虽然不是正确的方式,例如字体名称中的粗体)或者还有其他方法可以检测到特定字体是粗体/斜体/普通字体。
答案 0 :(得分:1)
i had used to itextsharp to extract font-family ,font color etc
public void Extract_inputpdf()
{
text_input_File = string.Empty;
StringBuilder sb_inputpdf = new StringBuilder();
PdfReader reader_inputPdf = new PdfReader(path); //read PDF
for (int i = 0; i <=reader_inputPdf.NumberOfPages ; i++)
{
TextWithFont_inputPdf inputpdf = new TextWithFont_inputPdf();
text_input_File = iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(reader_inputPdf, i, inputpdf);
sb_inputpdf.Append(text_input_File);
input_pdf = sb_inputpdf.ToString();
}
reader_inputPdf.Close();
clear();
}
public class TextWithFont_inputPdf : iTextSharp.text.pdf.parser.ITextExtractionStrategy
{
public void RenderText(iTextSharp.text.pdf.parser.TextRenderInfo renderInfo)
{
string curFont = renderInfo.GetFont().PostscriptFontName;
string divide = curFont;
string[] fontnames = null;
//split the words from postscript if u want separate. it will be in this
}
}
public string GetResultantText()
{
return result.ToString();
}
答案 1 :(得分:0)
PDF规范包含允许您指定字体样式的条目。然而不幸的是,在现实世界中,你经常会发现这些都不存在。
如果引用了字体而不是嵌入字体,这通常意味着你会遇到字体的PostScript名称。它需要一些启发式方法,但通常这个名称提供了足够的风格线索。听起来这就是你的所在。
如果嵌入了字体,您可以解析它并尝试从嵌入字体程序中查找样式信息。如果它是子集,那么在理论上这些信息可能会被删除,但总的来说我认为它不会。但是,解析TrueType / OpenType字体很无聊,你可能觉得不值得。
我在ABCpdf .NET软件组件上工作,所以我的回复可能包含基于ABCpdf的概念。这就是我所知道的。 :-)“