如何在C#中将pdf文件转换为excel

yas*_*bhi 4 c# pdf excel itext

我想" email addresses "从 PDF 文件中的表格中提取一些数据,例如 .. 并使用我提取的电子邮件地址向这些人发送电子邮件。

到目前为止我通过网络搜索发现的内容:

  1. 我必须将 PDF 文件转换为 Excel 才能轻松读取数据并根据需要使用它们。

  2. 我找到了一些免费的 dll,例如itextsharpPDFsharp

但我没有找到任何有助于在 C# 中执行此操作的代码片段。有什么解决办法吗?

Dis*_*lis 5

您绝对不必将 PDF 转换为 Excel。首先,请确定您的PDF是否包含文本数据,或者是扫描图像。如果它包含文本数据,那么您使用“一些免费的 dll”是正确的。我推荐 iTextSharp,因为它很流行且易于使用。

现在是有争议的部分。如果您不需要可靠的解决方案,最简单的方法是将所有 PDF 读取为字符串,然后使用正则表达式检索电子邮件。
以下是使用 iTextSharp 阅读 PDF 并提取电子邮件的示例(并不完美):

public string PdfToString(string fileName)
{
    var sb = new StringBuilder();    
    var reader = new PdfReader(fileName);
    for (int page = 1; page <= reader.NumberOfPages; page++)
    {
        var strategy = new SimpleTextExtractionStrategy();
        string text = PdfTextExtractor.GetTextFromPage(reader, page, strategy);
        text = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(text)));
        sb.Append(text);
    }
    reader.Close();        
    return sb.ToString();
}
//adjust expression as needed
Regex emailRegex = new Regex("Email Address (?<email>.+?) Passport No");
public IEnumerable<string> ExtractEmails(string content)
{   
    var matches = emailRegex.Matches(content);
    foreach (Match m in matches)
    {
        yield return m.Groups["email"].Value;
    }
}
Run Code Online (Sandbox Code Playgroud)