C#を利用してPDFドキュメントからテーブルを抽出する方法

PDFドキュメントはもっとも一般的に使われていて、便利な形式です、そのため、PDFドキュメントにテーブルを使用するのもよくある場合です。しかしPDFドキュメントは安全性を考慮して、簡単に編集できないです、この時テーブルの内容を抽出したいなら、どうやって操作しますか?この記事で、Spire.PDF for .NETによって提供されるテーブルを抽出するクラスとメソッドを呼び出して、テーブルセルのテキストコンテンツを取得する方法をご紹介します。

 

環境構成

  • Visual Studio 2017
  • .net framework 4.6.1
  • PDFテストドキュメント
  • ライブラリー:Spire.PDF for .NET

 

Dllファイルを参照する二つの方法

方法一:NuGetからダウンロードしてインストールします

手順:

1. 「参照」を右クリックして、「NuGetパッケージの管理」を選択します。

f:id:uha_noki:20211108115104p:plain

2. 「参照」を選択し、検索バーに「PDF」を入力してインストールします。

f:id:uha_noki:20211108115152p:plain

方法二:手動で参照を追加します

手順:

1. 「参照」を右クリックして、「参照の追加」を選択します。

f:id:uha_noki:20211108115217p:plain

2. 「参照」を選択し、「OK」ボタンをクリックします(事前に参照リストに追加する必要があります)

f:id:uha_noki:20211108115227p:plain

 

コードの表示:

using Spire.Pdf;

using Spire.Pdf.Tables;

using Spire.Pdf.Utilities;

using System.IO;

using System.Text;

 

namespace ExtractTable

{

    class Program

    {

        static void Main(string args)

        {

            //PDFドキュメントをロードする

            PdfDocument pdf = new PdfDocument();

            pdf.LoadFromFile("sample.pdf");

            StringBuilder builder = new StringBuilder();

            //テーブルを抽出する

            PdfTableExtractor Extractor = new PdfTableExtractor(pdf);

            PdfTable tableLists = null;

            for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)

            {

                tableLists = extractor.ExtractTable(pageIndex);

                if (tableLists != null && tableLists.Length > 0)

                {

                    foreach (PdfTable table in tableLists)

                    {

                        int row = table.GetRowCount();

                        int column = table.GetColumnCount();

                        for (int i = 0; i < row; i++)

                        {

                            for (int j = 0; j < column; j++)

                            {

                                string text = table.GetText(i, j);

                                builder.Append(text + " ");

                            }

                            builder.Append("\r\n");

                        }

                    }

                }

            }

            //抽出されたテーブルの内容をtxtドキュメントに保存する

            File.WriteAllText("ExtractedTable.txt", builder.ToString());              

        }

    }

}

抽出した結果は以下のように:

f:id:uha_noki:20211108115258p:plain

f:id:uha_noki:20211108115309p:plain以上になりました、最後まで読んでいただき、誠にありがとうございます。