2011-08-17 126 views
0

我想创建一个文本文件,这个下面PDF如何使用itext从PDF创建XMl或标记文件?

http://examples.itextpdf.com/results/part4/chapter16/with_font.pdf

输出应该类似于::

< BASEFONT: 'WaltDisneyScriptv4.1';类型:“无”;尺寸:'60' >的iText在行动<结束>

我可以谷歌和找到如何提取/找到一个PDF使用的字体,但不是他们的大小或类型(即粗体/斜体...)和相关字体正在使用的每个文本。

在情况下不同的字体被使用的O/P应该像

例如:< BASEFONT: '信使';类型:“无”;大小:'45'> iText <结束> < BaseFont:'WaltDisneyScriptv4.1';类型:“无”;尺寸:'60'>在行动<结束>

任何帮助表示赞赏。提前致谢!

回答

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); 
      } 
    } 

你应该能够扩展它来提取一些字体大小的信息。另外,如果字典中没有信息,那么您可以查看原始附记并从中获取字体信息。

+0

谢谢! 我能够提取以前也使用类似功能的字体名称信息...但无法提取字体大小...我是iText的新手...我不明白你在谈论的postscript的东西,详细请.. – user899489