2013-05-02 3 views
3

При извлечении текста из PDF мне нужно также извлечь размер шрифта. Вначале я извлек следующее:Получить fontsize из PDF с помощью itextsharp

iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(
    curBaseline[Vector.I1], 
    curBaseline[Vector.I2], 
    topRight[Vector.I1], 
    topRight[Vector.I2]); 

В этом я не могу получить точный размер шрифта. После этого я попытался использовать renderinfo.gs.fontsize;. В этом renderinfo.gs.fontsize я получу несколько текстовых шрифтов точного, но немногие, я не получу точный размер шрифта. Где я получу размер шрифта имеет «1.0». Может ли кто-нибудь сказать мне, что метод, который я использую, является правильным. Если NO есть какой-либо другой метод для извлечения размера шрифта с помощью iTextSharp. Я использую версию iTextSharp 5.4. Заранее спасибо.

using System; 
    using System.Collections; 
    // code java to C# conversion 
    public void renderText(TextRenderInfo renderInfo) 
    { 
     LineSegment curBaseline = renderInfo.Baseline; 
     LineSegment curAscentline = renderInfo.AscentLine; 
     Rectangle rect = new Rectangle(curBaseline.StartPoint.get(ArrayList.I1), curBaseline.StartPoint.get(ArrayList.I2), curAscentline.EndPoint.get(ArrayList.I1), curAscentline.EndPoint.get(ArrayList.I2)); 

     try 
     { 
      Console.Write(" [{0,6:F2}, {1,6:F2}, {2,6:F2}] \"{3}\" ({4} at {5,6:F2})\n", rect.Width, rect.Height, getEffectiveFontSize(renderInfo), renderInfo.Text, renderInfo.Font.FullFontName[0], getFontSize(renderInfo)); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e.ToString()); 
      Console.Write(e.StackTrace); 
     } 
    } 

    float getEffectiveFontSize(TextRenderInfo renderInfo) throws System.ArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchFieldException, NoSuchMethodException 
    { 
     Method convertHeight = typeof(TextRenderInfo).getDeclaredMethod("convertHeightFromTextSpaceToUserSpace", float.TYPE); 
     convertHeight.Accessible = true; 
     return (float?)convertHeight.invoke(renderInfo, getFontSize(renderInfo)); 
    } 

    float getFontSize(TextRenderInfo renderInfo) throws SecurityException, NoSuchFieldException, System.ArgumentException, IllegalAccessException 
    { 
     Field gsField = typeof(TextRenderInfo).getDeclaredField("gs"); 
     gsField.Accessible = true; 
     GraphicsState gs = (GraphicsState) gsField.get(renderInfo); 
     return gs.FontSize; 
    } 
+0

Вы также должны принять текущую матрицу преобразования во внимание, см правки в моем ответе [здесь] (http://stackoverflow.com/questions/15739221/how-to-implement-smallcaps-in-itextsharp/15752789#15752789). – mkl

+0

@mkl это в java, если я не ошибаюсь. и я попытался преобразовать код с помощью java в C#, но это было невозможно. Может ли кто-нибудь помочь с использованием csharp, пожалуйста, – Pragya

+0

Если интроспекция и отражение в C# слишком отличаются от того, что в Java, просто скопируйте классы парсера iTextSharp и сделайте общедоступные члены и методы. – mkl

ответ

-3

Надеется, что это было бы полезно

` 
Font arial = FontFactory.GetFont("Arial", 28, Color.GRAY); 
Font verdana = FontFactory.GetFont("Verdana", 16, Font.BOLDITALIC, new Color(125, 88, 15)); 
Font palatino = FontFactory.GetFont("palatino linotype italique",BaseFont.CP1252, BaseFont.EMBEDDED, 
    10, 
    Font.ITALIC, 
    Color.GREEN 
); 
Font smallfont = FontFactory.GetFont("Arial", 7); 
Font x = FontFactory.GetFont("nina fett"); 
x.Size = 10; 
x.SetStyle("Italic"); 
x.SetColor(100, 50, 200);` 

может быть использован для установки размера шрифта

+2

Если я не ошибаюсь, это можно использовать при создании pdf. Я хочу извлечь текст из PDF. мне нужно определить размер шрифта, который есть в PDF – Pragya

Смежные вопросы