从pdf中提取阿拉伯语到字符串c#
extract arabic from pdf to string c#
好的,我知道这个问题重复了太多次。但直到现在我还没有找到解决办法。
我正在使用 iTextSharp 从 pdf 中提取。对于英语它效果很好,但对于阿拉伯语它总是显示“????????”在控制台和 .txt 中的“Ó å æ á É”
这是我的代码
private static string ReadPdfFile(string fileName)
{
StringBuilder text = new StringBuilder();
if (File.Exists(fileName))
{
PdfReader pdfReader = new PdfReader(fileName);
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, 1, strategy);
//currentText = Encoding.UTF8.GetString(UTF8Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
text.Append(currentText);
}
return text.ToString();
}
更新:
输出文件使用UTF8解决了问题
现在我还有 2 个问题
它显示的是“ا ﻟ ﺘ ﻘ ﺪ ﻳ ﻢ ﺗ ﻢ”而不是“تم التوديم”
所以:
我需要删除字母之间的空格。
单词顺序颠倒了。
尝试使用以下代码将您的“Ó å æ á É”转换为“س ه و ل ٩”
public static string Arabic1256ToUtf8(string data)
{
var latin = Encoding.GetEncoding("ISO-8859-1");
var bytes = latin.GetBytes(data); // get the bytes for your ANSI string
var arabic = Encoding.GetEncoding("Windows-1256"); // decode it using the correct encoding
return arabic.GetString(bytes);
}
好的,我知道这个问题重复了太多次。但直到现在我还没有找到解决办法。 我正在使用 iTextSharp 从 pdf 中提取。对于英语它效果很好,但对于阿拉伯语它总是显示“????????”在控制台和 .txt 中的“Ó å æ á É” 这是我的代码
private static string ReadPdfFile(string fileName)
{
StringBuilder text = new StringBuilder();
if (File.Exists(fileName))
{
PdfReader pdfReader = new PdfReader(fileName);
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, 1, strategy);
//currentText = Encoding.UTF8.GetString(UTF8Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
text.Append(currentText);
}
return text.ToString();
}
更新:
输出文件使用UTF8解决了问题 现在我还有 2 个问题
它显示的是“ا ﻟ ﺘ ﻘ ﺪ ﻳ ﻢ ﺗ ﻢ”而不是“تم التوديم” 所以:
我需要删除字母之间的空格。
单词顺序颠倒了。
尝试使用以下代码将您的“Ó å æ á É”转换为“س ه و ل ٩”
public static string Arabic1256ToUtf8(string data)
{
var latin = Encoding.GetEncoding("ISO-8859-1");
var bytes = latin.GetBytes(data); // get the bytes for your ANSI string
var arabic = Encoding.GetEncoding("Windows-1256"); // decode it using the correct encoding
return arabic.GetString(bytes);
}