从PDF中提取文本使用iTextSharp

时间:2017-03-06 23:47:11

标签: c# pdf itext

我使用此代码读取pdf内容。但它不适用于某些pdf文件。

private void btnOpen_Click(object sender, EventArgs e)
{
    OpenFileDialog _of = new OpenFileDialog();
    StringBuilder _text = new StringBuilder();

    if (_of.ShowDialog() == DialogResult.OK)
    {
        string _PdfOPath = _of.FileName.ToString();

        if (File.Exists(_PdfOPath))
        {
            PdfReader _pdfReader = new PdfReader(_PdfOPath);
            for (int page = 1; page <= _pdfReader.NumberOfPages; page++)
            {
                ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
                string currentText = PdfTextExtractor.GetTextFromPage(_pdfReader, page, strategy);
                _text.Append(currentText);
            }
        }
    }
}

我改变的另一个案例

  

SimpleTextExtractionStrategy()

  

LocationTextExtractionStrategy()

但总是收到&#34; \ n \ n&#34;。 解决方案是什么?

这是我的PDF文件。PDF file

更新 我尝试了许多网站转换PDF在线,我发现了这一点。 https://www.pdftoexcel.com/

这是如此惊人的服务和免费。我真的很想知道他们如何做到这一点。

1 个答案:

答案 0 :(得分:0)

您的问题与回答here的问题有关。虽然字体编码 Identity-H 与ROS Adob​​e-CNS1-4结合使用,但在你的情况下它是 UniJIS-UCS2-H 与Adobe-Japan1-0 。在这两种情况下,表示亚洲编码的表格不包含在标准iTextSharp发行版中,而是包含在额外文件中,iTextAsian.dll和iTextAsianCmaps.dll,您必须将这些文件添加到项目中并添加到iText的资源搜索路径中

StreamUtil.AddToResourceSearch(System.Reflection.Assembly.Load("iTextAsian"));
StreamUtil.AddToResourceSearch(System.Reflection.Assembly.Load("iTextAsianCmaps"));

您可以检索DLL,例如here on SourceForge

应用于您的示例文件,此测试

StreamUtil.AddToResourceSearch(System.Reflection.Assembly.Load("iTextAsian"));
StreamUtil.AddToResourceSearch(System.Reflection.Assembly.Load("iTextAsianCmaps"));
var pdfReader = new PdfReader(@"selection.pdf");
var pageText = PdfTextExtractor.GetTextFromPage(pdfReader, 1, new SimpleTextExtractionStrategy());
Console.Out.Write("Content: {0}", pageText);

输出

Content: 東芝 現品票 東芝 現品票
2017/03/09 便 ㈱玉吉製作所 2017/03/09 便 ㈱玉吉製作所
 注文番号 受注納期 注文番号 受注納期
53M77062-01 2017/03/14 540117RJ-01 2017/03/14
 図番 図番
4X14-22886 WX58-47630*B   1
 品名 数量 品名 数量
SPACER           G0A
1
LINK
2
東芝 現品票 東芝 現品票
2017/03/09 便 ㈱玉吉製作所 2017/03/09 便 ㈱玉吉製作所
 注文番号 受注納期 注文番号 受注納期
540333RJ-01 2017/03/15 540523RF-01 2017/03/13
 図番 図番
2X79-36722 WX79-05236     1
 品名 数量 品名 数量
COVER
1
PLATEMTG
3
東芝 現品票 東芝 現品票
2017/03/09 便 ㈱玉吉製作所 2017/03/09 便 ㈱玉吉製作所
 注文番号 受注納期 注文番号 受注納期
540681RJ-01 2017/03/15 54A87736-01 2017/03/14
 図番 図番
3X17-46654*B 3X12-38439*A
 品名 数量 品名 数量
PLATEMTG
3
PLATE            G00
10