PDFファイルを整理したり、特定の情報を分類したりする際に便利なのが「タグ機能」です。ビジネスシーンでも、契約書や資料の分類、検索性の向上にタグは非常に役立ちます。この記事では、C#を使ってPDFファイルにタグを追加する方法を解説します。さらに、操作性の良いWindowsフォームアプリを作成し、簡単にタグ付け作業ができるように仕上げていきます。プログラミング初心者の方にもわかりやすいように、コード付きでステップごとに説明していきますので、ぜひ最後までご覧ください。
PDFファイルに「タグを付ける」とは?
PDFファイルにタグを付けるというのは、一般的には「メタデータ」としてキーワードやカテゴリ情報を埋め込むことを指します。これにより、ファイル検索時にキーワードで素早く見つけたり、整理分類することができます。
PDFのタグ付けには主に以下の2つの方法があります。
- PDF内部のメタデータにキーワードを追加する
- ファイルの外部情報(例:データベースやテキストファイル)にタグを紐づける
この記事では前者、すなわちPDF自体にタグ情報(キーワード)を埋め込む方法を採用します。
開発に必要なライブラリと環境
C#でPDFファイルにタグを付けるには、PDFを操作できる外部ライブラリが必要です。今回は以下の環境を前提とします。
- 開発環境:Visual Studio 2022 以降
- .NETバージョン:.NET Framework 4.7以上 または .NET 6以降
- 使用ライブラリ:iText7(NuGetで追加)
NuGetでiText7を追加する手順
Visual Studio の「ソリューションエクスプローラー」からプロジェクトを右クリック → 「NuGet パッケージの管理」→「iText7」を検索し、インストールします。
Windowsフォームアプリの概要
このアプリでは、以下のような操作を実現します。
- PDFファイルを選択
- タグ(キーワード)を入力
- 「保存」ボタンでPDFにタグを追加
フォームのUIはシンプルに以下の構成にします。
- ラベル:「ファイル選択」
- ボタン:「ファイルを開く」
- テキストボックス:ファイルパス表示
- ラベル:「タグ入力」
- テキストボックス:タグ入力欄
- ボタン:「タグを追加して保存」
Windowsフォームアプリの作成手順
1. フォームデザインの作成
以下はフォームデザインに使用する主なコントロールです:
コントロール | 名前 | 説明 |
---|---|---|
Label | lblFile | ファイルラベル |
TextBox | txtFilePath | PDFのパスを表示 |
Button | btnSelectFile | ファイル選択ダイアログ |
Label | lblTags | タグ入力ラベル |
TextBox | txtTags | タグ入力欄 |
Button | btnSaveTags | タグ保存ボタン |
2. コードの実装(C#)
以下に、基本的なコード例を示します。
using iText.Kernel.Pdf;
using iText.Kernel.XMP;
using iText.Kernel.XMP.Options;
using Microsoft.Win32;
using System;
using System.Windows.Forms;
namespace PdfTaggerApp
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void btnSelectFile_Click(object sender, EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "PDF Files|*.pdf";
if (dialog.ShowDialog() == DialogResult.OK)
{
txtFilePath.Text = dialog.FileName;
}
}
private void btnSaveTags_Click(object sender, EventArgs e)
{
string filePath = txtFilePath.Text;
string tags = txtTags.Text;
if (string.IsNullOrWhiteSpace(filePath) || string.IsNullOrWhiteSpace(tags))
{
MessageBox.Show("ファイルとタグを入力してください");
return;
}
try
{
using (PdfReader reader = new PdfReader(filePath))
using (PdfWriter writer = new PdfWriter(filePath + ".tagged.pdf"))
using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
{
var info = pdfDoc.GetDocumentInfo();
info.SetKeywords(tags);
}
MessageBox.Show("タグを追加しました(保存済)");
}
catch (Exception ex)
{
MessageBox.Show("エラー:" + ex.Message);
}
}
}
}
このコードでは、元のPDFファイルを読み込み、タグ(キーワード)をメタデータとして書き込み、新しいファイル(例:original.tagged.pdf
)として保存します。
実行結果と操作イメージ
アプリを実行すると、次のような流れで操作が可能です。
- 「ファイルを開く」ボタンをクリックしてPDFを選択
- タグを「契約書」「2025年」「社内資料」などと入力
- 「タグを追加して保存」ボタンをクリック
完了後、同じディレクトリに新しいPDFファイルが生成され、そのPDFにタグがメタデータとして保存されます。
応用:タグ情報の読み取り表示
読み取り用のコードも簡単に紹介しておきます。
using (PdfReader reader = new PdfReader(filePath))
using (PdfDocument pdfDoc = new PdfDocument(reader))
{
var info = pdfDoc.GetDocumentInfo();
string keywords = info.GetKeywords();
MessageBox.Show("このPDFのタグ: " + keywords);
}
PDFのタグ情報を確認するためにも役立ちます。
まとめ
PDFファイルにタグを付けることで、業務効率が大幅に向上します。C#とiText7ライブラリを使えば、フォームアプリとして直感的に操作できるツールを簡単に作成できます。今回紹介した例を元に、複数ファイル対応やタグ履歴の保存機能など、さらに便利な機能を追加してカスタマイズしてみてください。