我想在pdf下面为此创建一个Text文件
http://examples.itextpdf.com/results/part4/chapter16/with_font.pdf
输出应类似于::
< BASEFONT: 'WaltDisneyScriptv4.1';类型:“无”;大小:'60'> iText在行动<结束>
我可以谷歌找到如何提取/查找pdf中使用的字体,但不是它们的大小或类型(即粗体/斜体......),并将字体与正在使用的每个文本相关联。
如果使用不同的字体,o / p应该像
例如:< BaseFont:'Courier';类型:“无”;大小:'45'> iText<结束>< BaseFont:'WaltDisneyScriptv4.1';类型:“无”;尺寸:'60'>在行动<结束>
感谢任何帮助。提前谢谢!
答案 0 :(得分:0)
以下是我用来在pdf中找到字体集的一些代码。
public static void processResource(Map<String, String> set, PdfDictionary resource)
{
if (resource == null)
return;
PdfDictionary xobjects = resource.getAsDict(PdfName.XOBJECT);
if (xobjects != null)
{
for (PdfName key : xobjects.getKeys())
{
processResource(set, xobjects.getAsDict(key));
}
}
PdfDictionary fonts = resource.getAsDict(PdfName.FONT);
if (fonts == null)
return;
PdfDictionary font;
for (PdfName key : fonts.getKeys())
{
font = fonts.getAsDict(key);
String name = font.getAsName(PdfName.BASEFONT).toString();
if (name.length() > 8 && name.charAt(7) == '+')
{
name = String.format("%s subset (%s)", name.substring(8), name.substring(1, 7));
}
else
{
name = name.substring(1);
PdfDictionary desc = font.getAsDict(PdfName.FONTDESCRIPTOR);
if (desc == null)
name += " nofontdescriptor";
else if (desc.get(PdfName.FONTFILE) != null)
name += " (Type 1) embedded";
else if (desc.get(PdfName.FONTFILE2) != null)
name += " (TrueType) embedded";
else if (desc.get(PdfName.FONTFILE3) != null)
name += " (" + font.getAsName(PdfName.SUBTYPE).toString().substring(1) + ") embedded";
}
set.put(font.getAsName(PdfName.NAME).toString(), name);
// System.err.println(font.getAsName(PdfName.NAME) + " " + name);
}
}
您应该能够扩展它以提取一些字体大小信息。此外,如果词典中没有信息,那么您可以查看原始postscript并从中获取字体信息。