首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用itextsharp提取c#中的阿拉伯文本

使用itextsharp提取c#中的阿拉伯文本
EN

Stack Overflow用户
提问于 2016-11-14 19:24:47
回答 1查看 1.6K关注 0票数 4

我有这段代码,我用它来获取PDF的文本。这是很好的PDF格式的英语,但当我试图提取的阿拉伯语文本,它显示给我这样的东西。

+n 9 n <+,+ ) + $ #$+$ F% 9& .< $:;

代码语言:javascript
复制
using (PdfReader reader = new PdfReader(path))
{
     ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
     String text = "";
     for (int i = 1; i <= reader.NumberOfPages; i++)
     {
          text = PdfTextExtractor.GetTextFromPage(reader, i,strategy);
     }

}
EN

回答 1

Stack Overflow用户

发布于 2016-11-15 20:47:48

我不得不像这样改变策略

代码语言:javascript
复制
var t = PdfTextExtractor.GetTextFromPage(reader, i, new LocationTextExtractionStrategy());
var te = Convert(t);

这个功能可以逆转阿拉伯语单词,保留英语。

代码语言:javascript
复制
  private string Convert(string source)
  {
       string arabicWord = string.Empty;
       StringBuilder sbDestination = new StringBuilder();

       foreach (var ch in source)
       {
           if (IsArabic(ch))
               arabicWord += ch;
           else
           {
               if (arabicWord != string.Empty)
                    sbDestination.Append(Reverse(arabicWord));

               sbDestination.Append(ch);
               arabicWord = string.Empty;
            }
        }

        // if the last word was arabic    
        if (arabicWord != string.Empty)
            sbDestination.Append(Reverse(arabicWord));

        return sbDestination.ToString();
     }


     private bool IsArabic(char character)
     {
         if (character >= 0x600 && character <= 0x6ff)
             return true;

         if (character >= 0x750 && character <= 0x77f)
             return true;

         if (character >= 0xfb50 && character <= 0xfc3f)
             return true;

         if (character >= 0xfe70 && character <= 0xfefc)
             return true;

         return false;
     }

     // Reverse the characters of string
     string Reverse(string source)
     {
          return new string(source.ToCharArray().Reverse().ToArray());
     }
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40596320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档