使用IRONPDF

如何在C#中读取PDF表格

Kannaopat Udonpant
坎那帕·乌东攀
2023年三月25日
更新 2024年三月3日
分享:

用 C# 从 PDF 文件中提取数据是一项相当大的挑战。 数据可以是文本、图像、图表、图形、表格等形式。有时,业务分析人员需要提取数据以进行数据分析,并根据分析结果做出决策。 IronPDF C# PDF Library 是从 PDF 文件中提取数据的绝佳解决方案。

本文将演示如何使用 IronPDF 库用 C# 从 PDF 文档中提取表格数据。

IronPDF - C# PDF 库

IronPDF 是一个 C# .NET 库解决方案,用于在 .NET 中生成 PDF,帮助开发人员在其软件应用程序中轻松读取、创建和编辑 PDF 文档。 其 Chromium 引擎可准确、快速地渲染 PDF 文档。 它允许开发人员从不同格式无缝转换为 PDF,反之亦然。 它支持最新的 .NET 7 Framework 以及 .NET Framework 6、5、4、.NET Core 和 Standard。

此外,IronPDF .NET API 还能让开发人员轻松操作和编辑 PDF、添加页眉和页脚,以及从 PDF 中提取文本、图像和表格。

一些重要功能包括

使用IronPDF库在C#中提取表格数据的步骤

要从 PDF 文档中提取表格数据,我们需要在本地计算机系统中安装以下组件:

  1. Visual Studio - Visual Studio 2022 是官方的 C# 开发 IDE,必须安装在计算机上。 请从Visual Studio 网站下载并安装。

  2. 创建项目 - 创建一个用于提取数据的控制台应用程序。 请按照以下步骤创建项目:

    • 打开 Visual Studio 2022,然后点击创建新项目按钮

    如何在C#中读取PDF表格,图1:Visual Studio的启动屏幕

    Visual Studio 的启动界面

    • 接下来,选择 C# 控制台应用程序并点击下一步

    如何在C#中读取PDF表格,图2:在Visual Studio中创建一个新的控制台应用程序

    在 Visual Studio 中创建一个新的控制台应用程序

    • 接下来,输入您的项目名称“ReadPDFTable”,然后点击下一步。

    如何用C#读取PDF表格,图3:配置新创建的应用程序

    配置新创建的应用程序

    • 为您的项目选择".NET Framework 6 长期支持"。

    如何在C#中读取PDF表格,第4步:选择.NET Framework

    选择一个 .NET Framework

    • 单击创建按钮,控制台项目将被创建。 现在,我们可以通过编程从 PDF 文档中提取表格数据了。
  3. 安装 IronPDF - 有三种不同的方法来安装 IronPDF 库。 它们如下

    • 使用 Visual Studio。 Visual Studio 包含 NuGet 软件包管理器,可帮助在 C# 应用程序中安装所有 NuGet 软件包。

      • 单击顶部菜单中的工具,或

      • 右键单击解决方案资源管理器中的项目

    如何在 C# 中读取 PDF 表格,图 5:工具和管理 NuGet 包

    工具和管理 NuGet 包

    - 打开 NuGet 包管理器后,浏览 IronPDF 并点击安装,如下图所示:

    如何在C#中读取PDF表格,图6:工具和管理NuGet包

    工具和管理 NuGet 包

    • 直接下载 NuGet 包。 另一个轻松下载和安装 IronPDF 的方法是访问其 NuGet 包页面

    • 下载 IronPDF .DLL 库。 也可以从官方 IronPDF 网站下载 IronPDF。 请记住,您必须在项目中引用 .DLL 才能使用它。

使用表格数据创建 PDF 文档

在创建任何内容之前,需要将 IronPDF 命名空间添加到文件中,并设置许可证密钥以使用 IronPDF 库中的ExtractText方法。

using IronPdf;

License.LicenseKey = "YOUR-TRIAL/PURCHASED-LICENSE-KEY";
using IronPdf;

License.LicenseKey = "YOUR-TRIAL/PURCHASED-LICENSE-KEY";
Imports IronPdf

License.LicenseKey = "YOUR-TRIAL/PURCHASED-LICENSE-KEY"
$vbLabelText   $csharpLabel

在这里,将从一个包含表格的 HTML 字符串创建一个 PDF 文档,然后使用 IronPdf 提取这些数据。 HTML 保存在一个字符串变量中,代码如下:

string HTML = "<html>" +
        "<style>" +
            "table, th, td {" +
                "border:1px solid black;" +
            "}" +
        "</style>" +
        "<body>" +
            "<h1>A Simple table example</h2>" +
            "<table>" +
                "<tr>" +
                    "<th>Company</th>" +
                    "<th>Contact</th>" +
                    "<th>Country</th>" +
                "</tr>" +
                "<tr>" +
                    "<td>Alfreds Futterkiste</td>" +
                    "<td>Maria Anders</td>" +
                    "<td>Germany</td>" +
                "</tr>" +
                "<tr>" +
                    "<td>Centro comercial Moctezuma</td>" +
                    "<td>Francisco Chang</td>" +
                    "<td>Mexico</td>" +
                "</tr>" +
            "</table>" +
            "<p>To understand the example better, we have added borders to the table.</p>" +
        "</body>" +
     "</html>";
string HTML = "<html>" +
        "<style>" +
            "table, th, td {" +
                "border:1px solid black;" +
            "}" +
        "</style>" +
        "<body>" +
            "<h1>A Simple table example</h2>" +
            "<table>" +
                "<tr>" +
                    "<th>Company</th>" +
                    "<th>Contact</th>" +
                    "<th>Country</th>" +
                "</tr>" +
                "<tr>" +
                    "<td>Alfreds Futterkiste</td>" +
                    "<td>Maria Anders</td>" +
                    "<td>Germany</td>" +
                "</tr>" +
                "<tr>" +
                    "<td>Centro comercial Moctezuma</td>" +
                    "<td>Francisco Chang</td>" +
                    "<td>Mexico</td>" +
                "</tr>" +
            "</table>" +
            "<p>To understand the example better, we have added borders to the table.</p>" +
        "</body>" +
     "</html>";
Dim HTML As String = "<html>" & "<style>" & "table, th, td {" & "border:1px solid black;" & "}" & "</style>" & "<body>" & "<h1>A Simple table example</h2>" & "<table>" & "<tr>" & "<th>Company</th>" & "<th>Contact</th>" & "<th>Country</th>" & "</tr>" & "<tr>" & "<td>Alfreds Futterkiste</td>" & "<td>Maria Anders</td>" & "<td>Germany</td>" & "</tr>" & "<tr>" & "<td>Centro comercial Moctezuma</td>" & "<td>Francisco Chang</td>" & "<td>Mexico</td>" & "</tr>" & "</table>" & "<p>To understand the example better, we have added borders to the table.</p>" & "</body>" & "</html>"
$vbLabelText   $csharpLabel

接下来,使用ChromePdfRenderer从HTML字符串创建PDF。 代码如下

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdfDocument = renderer.RenderHtmlAsPdf(HTML);
pdfDocument.SaveAs("table_example.pdf");
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdfDocument = renderer.RenderHtmlAsPdf(HTML);
pdfDocument.SaveAs("table_example.pdf");
Dim renderer As New ChromePdfRenderer()
Dim pdfDocument As PdfDocument = renderer.RenderHtmlAsPdf(HTML)
pdfDocument.SaveAs("table_example.pdf")
$vbLabelText   $csharpLabel

SaveAs 方法将 PdfDocument 对象保存为名为 "table_example.pdf" 的 PDF 文件。 保存的文件如下所示:

如何在C#中读取PDF表,图7:在NuGet包管理器UI中搜索IronPDF

在NuGet包管理器UI中搜索IronPDF

使用 IronPDF 从 PDF 文档中提取表格数据

要从 PDF 表格中提取数据,使用 PdfDocument 对象打开文档,然后使用 ExtractAllText 方法检索数据以进行进一步分析。 下面的代码演示了如何完成这项任务:

PdfDocument pdfDocument = new PdfDocument("table_example.pdf");
string text = pdfDocument.ExtractAllText();
PdfDocument pdfDocument = new PdfDocument("table_example.pdf");
string text = pdfDocument.ExtractAllText();
Dim pdfDocument As New PdfDocument("table_example.pdf")
Dim text As String = pdfDocument.ExtractAllText()
$vbLabelText   $csharpLabel

上述代码使用ExtractAllText方法分析整个PDF文档,并将提取的数据(包括表格数据)返回到一个字符串变量中。 然后,变量的值可以显示或存储在文件中,以供日后使用。 以下代码可在屏幕上显示:

Console.WriteLine("The extracted Text is:\n" + text);
Console.WriteLine("The extracted Text is:\n" + text);
Imports Microsoft.VisualBasic

Console.WriteLine("The extracted Text is:" & vbLf & text)
$vbLabelText   $csharpLabel

如何在 C# 中读取 PDF 表,图 8:要提取文本的 PDF 文件

要提取文本的PDF文件

从提取的文本内容中提取表格数据

C# 提供了一个 String.Split 方法,可以根据分隔符分割字符串。 以下代码将帮助您将输出限制为表格数据。

string [] textList = text.Split("\n");
foreach (string textItem in textList)
{
    if (textItem.Contains("."))
    {
        continue;
    }
    else
    {
        Console.WriteLine(textItem);
    }
}
string [] textList = text.Split("\n");
foreach (string textItem in textList)
{
    if (textItem.Contains("."))
    {
        continue;
    }
    else
    {
        Console.WriteLine(textItem);
    }
}
Imports Microsoft.VisualBasic

Dim textList() As String = text.Split(vbLf)
For Each textItem As String In textList
	If textItem.Contains(".") Then
		Continue For
	Else
		Console.WriteLine(textItem)
	End If
Next textItem
$vbLabelText   $csharpLabel

这个简单的代码示例有助于从提取的文本中仅提取表格单元格数据。 首先,文本行被拆分并保存在字符串数组中。 然后,对每个数组元素进行迭代,跳过末尾带有句号". "的元素。 在大多数情况下,从提取的数据中只检索表格数据,但也可能检索其他行。 输出结果如下

如何在C#中读取PDF表格,图9:控制台显示提取的文本

控制台显示提取的文本

从上面的截图可以看出,表格数据的格式和逻辑结构在Console.WriteLine方法的输出中得到了保留。 您可以在此C# 中从 PDF 提取数据的代码示例中找到有关如何使用 IronPDF 从 PDF 文档中提取数据的更多详细信息。

输出结果还可以保存为 CSV 文件,稍后可以对其进行格式化和编辑,以便进行更多的数据分析。 代码如下

using (StreamWriter file = new StreamWriter("table_example.csv", false))
{
    string [] textList = text.Split("\n");
    foreach (string textItem in textList)
    {
        if (textItem.Contains("."))
        {
            continue;
        }
        else
        {
            file.WriteLine(textItem);
        }
    }
}
using (StreamWriter file = new StreamWriter("table_example.csv", false))
{
    string [] textList = text.Split("\n");
    foreach (string textItem in textList)
    {
        if (textItem.Contains("."))
        {
            continue;
        }
        else
        {
            file.WriteLine(textItem);
        }
    }
}
Imports Microsoft.VisualBasic

Using file As New StreamWriter("table_example.csv", False)
	Dim textList() As String = text.Split(vbLf)
	For Each textItem As String In textList
		If textItem.Contains(".") Then
			Continue For
		Else
			file.WriteLine(textItem)
		End If
	Next textItem
End Using
$vbLabelText   $csharpLabel

输出将保存为一个CSV文件,其中每个textItem将是一个列。

摘要

本文演示了如何使用 IronPDF 从 PDF 文档中提取数据和表格。 IronPDF 为从 PDF 文件中提取文本提供了多个有用的选项。 它提供了ExtractTextFromPage方法,可以从特定页面提取数据。 IronPDF 还支持将不同格式转换为 PDF,例如markdown 文件DOCX 文件,以及从 PDF 转换为不同格式。 这样,开发人员就可以轻松地将 PDF 功能集成到应用程序开发过程中。 此外,它不需要使用 Adobe Acrobat Reader 来查看和编辑 PDF 文档。

IronPDF 在开发期间是免费的,可用于商业用途需要获得许可。 它提供免费的试用许可证来测试IronPDF的完整功能。 您可以在此链接上找到更多详细信息。

Kannaopat Udonpant
坎那帕·乌东攀
软件工程师
在成为软件工程师之前,Kannapat 从日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了生物生产工程系车辆机器人实验室的成员。2022年,他利用自己的 C# 技能加入了 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他能直接向编写 IronPDF 大部分代码的开发者学习。除了同伴学习,Kannapat 还享受在 Iron Software 工作的社交方面。不写代码或文档时,Kannapat 通常在 PS5 上玩游戏或重看《最后生还者》。
< 前一页
如何将二维码转换为PDF
下一步 >
PDF查看器C# Windows应用程序(教程)