2013-09-10 3 views
0

Я хочу сделать преобразование pdf в текстовый формат и использовать itextsharp dll для этого здесь - это мой код, который конвертирует мой pdf в строковый формат, но в некоторых случаях PDF этот код не работает надлежащим образом например, когда я передаю PDF-файл, и предположим, что в заголовке PDF есть такое имя, как окна Microsoft, а затем он преобразует его, как MMMiicccrrossofft WWiiiindooowsss, и предположим, что есть идентификатор электронной почты, такой как [email protected], чем он дает результат, например xxxyyyzzzz @@@ ggggmaillll.com. может кто-нибудь сказать мне, почему это происходит в некоторых случаях.Невозможно правильно преобразовать текст в текст

public static string ReadPDFFile(string pdfFile) 
    { 
     StringBuilder text = new StringBuilder(); 
     if (File.Exists(pdfFile)) 
     { 
      PdfReader reader = new PdfReader(pdfFile); 
      for (int i = 1; i <= reader.NumberOfPages; i++) 
      { 
       ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); 
       PdfReader pdfreader = new PdfReader(pdfFile); 
       string currenttext = PdfTextExtractor.GetTextFromPage(pdfreader, i, strategy); 
       currenttext = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currenttext)));     
       text.Append(currenttext); 
      } 
      try 
      { 
       reader.Close(); 
      } 
      catch 
      { 
      } 
     } 
     return Convert.ToString(text); 
    } 

ответ

0

, когда я прохожу PDF файл, и пусть в заголовке Pdf есть имя, как окна Microsoft, то это преобразование его как MMMiicccrrossofft WWiiiindooowsss и предположим, что существует электронный идентификатор, как [email protected] чем giveing ​​результат, как xxxyyyzzzz @@@ ggggmaillll.com. может кто-нибудь сказать мне, почему это происходит в некоторых случаях.

Вы упомянули, что эта проблема возникает особенно со специальными текстовыми частями, такими как заголовки или адреса электронной почты. Я предполагаю, что эти текстовые части напечатаны несколько смелыми.

Причина, по которой письма в таких полужирных частях извлекаются несколько раз, заключается в том, что внутри PDF там, скорее всего, есть несколько копий этих букв! Чтобы добиться смелого эффекта без фактического использования жирного шрифта, некоторые программы печатают один и тот же символ несколько раз с небольшим смещением. Это часто называют «бедный человек смелым».

Другие эффекты, например. некоторая тень, может использовать одну и ту же базовую технику, просто используя другой цвет и, возможно, несколько большие смещения между копиями одного и того же символа.

Чтобы извлечь такие копии одного и того же символа, как один, вам необходимо создать расширенную стратегию извлечения текста, которая распознает эти методы. Вы можете создать их на основе кода существующих стратегий SimpleTextExtractionStrategy и LocationTextExtractionStrategy, проверив, есть ли несколько встречаний одного и того же символа с почти теми же координатами.

+0

спасибо mkl, y right, но я не получаю адрес электронной почты, который в гиперссылке – SANDEEP

+0

после использования обеих этих стратегий im, не получая текст моей гиперссылки – SANDEEP

+0

Интерактивные функции PDF часто появляются не из какого-либо содержимого страницы, а из некоторых * аннотаций *, которые по умолчанию ** не ** обрабатываются путем извлечения текста. – mkl