我使用此代码使用iTextSharp阅读pdf内容。当内容是英语时它工作正常,但当内容是波斯语或阿拉伯语时不起作用
结果是这样的:
Here是样本非英文PDF测试。使用iTextSharp在C#中阅读pdf内容
UZU>ناUU”بÙ~طثیؿیÙ> U〜زؾاUU>ÙØÙ”Ù,Ù>Ù... O یٔ欧•Ø³Â ©卡尔·塞甘foppersian.codeplex.com www.codebetter.com 11个UU”بÙ~طثUZU>نایؿیÙ> U〜
همانرب لوصا یسیون مرن دیلوت رتهب رازÙا
什么方案?
public string ReadPdfFile(string fileName)
{
StringBuilder text = new StringBuilder();
if (File.Exists(fileName))
{
PdfReader pdfReader = new PdfReader(fileName);
for (int page = 1; page <= pdfReader.NumberOfPages; page++)
{
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));
text.Append(currentText);
pdfReader.Close();
}
}
return text.ToString();
}
我认为阿拉伯字符,它正在打印他们相应的Unicode字符。所以在打印之前,你需要将它们转换成正常的字符串/字符。 – vikiiii 2012-04-17 06:01:35
@vikiiii谢谢,你有什么想法我该怎么做? – Shahin 2012-04-17 06:20:03
[查看此答案](http://stackoverflow.com/questions/9447648/parse-a-persian-pdf-file-to-txt-and-its-images/9454073#9454073)为例。但即使如此,那里**是一个问题(IIRC与5.1.2),因为波斯语/阿拉伯语是从右到左的语言。建议您尝试最新版本或SVN并查看问题是否已得到解决。 – kuujinbo 2012-04-17 09:49:59