我正致力于将PDF转换为文本。我可以正确地从PDF获取文本,但是表结构很复杂。我知道PDF不支持表结构,但我认为有一种方法可以正确获取单元格。好吧,例如:
我想转换为这样的文字:
> This is first example.
> This is second example.
但是,当我将PDF转换为文本时,theese数据看起来像这样:
> This is This is
> first example. second example.
如何正确获取值?
- 编辑:
以下是我如何将PDF转换为文本:
OpenFileDialog ofd = new OpenFileDialog();
string filepath;
ofd.Filter = "PDF Files(*.PDF)|*.PDF|All Files(*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
filepath = ofd.FileName.ToString();
string strText = string.Empty;
try
{
PdfReader reader = new PdfReader(filepath);
for (int page = 1; page < reader.NumberOfPages; page++)
{
ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.LocationTextExtractionStrategy();
string s = PdfTextExtractor.GetTextFromPage(reader, page, its);
s = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(s)));
strText += s;
}
reader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
答案 0 :(得分:1)
让我的评论成为真正的答案......
您使用LocationTextExtractionStrategy
进行文字提取:
ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.LocationTextExtractionStrategy();
string s = PdfTextExtractor.GetTextFromPage(reader, page, its);
此策略从上到下排列从左到右的行找到的所有文本(实际上也考虑了文本行角度)。因此,显然不需要从具有多行内容的单元格的表中提取文本。
根据所涉及的文件,可以采取不同的方法:
SimpleTextExtractionStrategy
。在这种情况下,OP评论说他用LocationTextExtractionStrategy
更改了SimpleTextExtractionStrategy
,然后就可以了。