チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

Koohji

Koohji

Excel セルの表示形式Number Format)は、スプレッドシートを扱う際に重要なステップです。特に、プロフェッショナルな場面やデータドリブンな環境では、適切な表示形式を設定することで、データを明確かつ一貫性のある形で提示でき、用途に応じた適切な形式で表示することが可能になります(例:財務データ、パーセンテージ、日付、科学的値など)。Java を使用して Excel のタスクを自動化する場合、適切な表示形式をプログラムで設定することで、時間を節約し、エラーを減らし、レポートやダッシュボードの可読性を向上させることができます。

本記事では、Spire.XLS for Java を使用して、Excel セルの表示形式を設定する方法を説明します。これにより、洗練された構造化スプレッドシートを簡単に作成することが可能になります。

Spire.XLS for Java をインストールします

まず、Spire.XLS for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>14.12.0</version>
    </dependency>
</dependencies>

Java で Excel の表示形式を設定する

Spire.XLS for Java は、CellRange.setNumberFormat() メソッドを提供しており、Excel の表示形式コードを使用してセルの表示形式を設定できます。以下の表は、Excel の表示形式コードでよく使用される記号とその機能を説明しています。

記号 説明
0 と # 0は桁数を強制的に表示(必要に応じてゼロ埋め)、#は必要な場合にのみ桁を表示します。
? 数字の位置を揃えるためのプレースホルダー。使用されない場合はスペースを確保しますが表示しません。
, と . ,は千単位の区切り文字として使用され、1000での除算も示します。.は小数点を表します。
% 数値を100倍し、パーセント記号を追加します。
E+ / E- 科学的記数法で、正および負の指数を表します。
通貨($, €, ¥など) 対応する通貨記号を表示します。
[Color] テキストの色を設定(例:[Red], [Blue])。
@ テキストプレースホルダー。カスタムフォーマットでテキストを表現するために使用されます。
日付/時刻(yyyy, mmmm, mm, dd, hh, ss, AM/PM) 年、月名、月、日、時間、分、秒、12時間制のAM/PMを表します。

Java で Excel セルの表示形式を設定する手順は以下の通りです:

  • Workbook オブジェクトを作成して、新しい Excel ワークブックを作成します。
  • Workbook.getWorksheets().get() メソッドを使用して、最初のデフォルトワークシートを取得します。
  • CellRange.setValue() メソッドで値を追加するか、CellRange.setNumberValue() メソッドで数値を追加します。
  • CellRange.setNumberFormat() メソッドで表示形式を設定します。
  • Workbook.saveToFile() メソッドでワークブックを保存します。
  • Java
import com.spire.xls.*;

public class SetNumberFormat {
    public static void main(String[] args) {
        // 新しいワークブックインスタンスを作成
        Workbook workbook = new Workbook();

        // 最初のワークシートを取得
        Worksheet sheet = workbook.getWorksheets().get(0);

        // タイトルを追加
        sheet.getCellRange("B1").setText("数値表示形式");
        sheet.getCellRange("B1").getCellStyle().getExcelFont().isBold(true);
        sheet.getCellRange("B1").getCellStyle().getExcelFont().setFontName("Yu Gothic UI");
        sheet.getCellRange("B1:C1").merge();
        sheet.getCellRange("B1:C1").setHorizontalAlignment(HorizontalAlignType.Center);

        // 数値フォーマットの例と対応する値を追加
        // 正の数値フォーマットを追加
        addNumberFormatExample(sheet, "B3", "C3", "0", "1234.5678");
        addNumberFormatExample(sheet, "B4", "C4", "0.00", "1234.5678");
        addNumberFormatExample(sheet, "B5", "C5", "#,##0.00", "1234.5678");
        addNumberFormatExample(sheet, "B6", "C6", "$#,##0.00", "1234.5678");

        // 負の数値フォーマットを追加
        addNumberFormatExample(sheet, "B7", "C7", "0;[Red]-0", "-1234.5678");
        addNumberFormatExample(sheet, "B8", "C8", "0.00;[Red]-0.00", "-1234.5678");

        // 科学表記とパーセンテージフォーマットを追加
        addNumberFormatExample(sheet, "B9", "C9", "0.00E+00", "1234.5678");
        addNumberFormatExample(sheet, "B10", "C10", "0.00%", "0.5678");

        // 日付と時刻フォーマットを追加
        addNumberFormatExample(sheet, "B11", "C11", "yyyy-MM-dd", "44930.0"); // 2023-01-01のExcel日付値
        addNumberFormatExample(sheet, "B12", "C12", "HH:mm:ss", "0.75"); // 18:00:00のExcel時刻値

        // テキストフォーマットを追加
        addNumberFormatExample(sheet, "B13", "C13", "@", "テキスト例");

        // フォーマットを設定
        sheet.getCellRange("B3:B13").getCellStyle().setKnownColor(ExcelColors.Gray25Percent);
        sheet.getCellRange("C3:C13").getCellStyle().setKnownColor(ExcelColors.Gray50Percent);
        sheet.setColumnWidth(2, 24);
        sheet.setColumnWidth(3, 24);

        // ワークブックをファイルに保存
        workbook.saveToFile("output/Excelの数字書式を設定.xlsx", FileFormat.Version2016);
        workbook.dispose();
    }

    /**
     * 指定されたワークシートのセルに数値フォーマットの例を追加します。
     *
     * @param sheet        修正するワークシート。
     * @param textCell     数値フォーマット文字列を表示するセル。
     * @param valueCell    フォーマットされた値を表示するセル。
     * @param format       数値フォーマットコード。
     * @param value        フォーマットする数値値。
     */
    private static void addNumberFormatExample(Worksheet sheet, String textCell, String valueCell, String format, String value) {
        sheet.getCellRange(textCell).setText(format); // 数値フォーマットコードを表示
        sheet.getCellRange(valueCell).setValue(value); // 値を追加
        // sheet.getCellRange(valueCell).setNumberValue(Double); // またはsetNumberValue()メソッドで数値を設定
        sheet.getCellRange(valueCell).setNumberFormat(format); // 数値フォーマットを適用
    }
}

Java で Excel の表示形式を設定する

Java で指定した書式の値を Excel セルに追加する

Spire.XLS for Java では、CellRange クラスのメソッドを使用して、特定の数値書式でデータを直接 Excel セルに追加することも可能です。以下の表は、セルにデータを追加するための主なメソッドと、対応するデータ型を説明しています。

メソッド 説明
setText(String text) セルまたはセル範囲にテキスト値を設定します。
setNumberValue(double numberValue) セルまたはセル範囲に数値を設定します。
setBooleanValue(boolean booleanValue) セルまたはセル範囲にブール値(true/false)を設定します。
setDateTimeValue(java.util.Date dateTime) セルまたはセル範囲に日時値を設定します。
setHtmlString(String htmlCode) セルまたはセル範囲にHTML形式の文字列を設定します。

Excel のセルに特定の数値形式でデータを追加する詳細な手順は次のとおりです:

  • Workbook クラスのインスタンスを作成します。
  • Workbook.getWorksheets().get() メソッドを使用して、最初のワークシートを取得します。
  • Worksheet.getCellRange() メソッドを使用して、セルまたはセル範囲を取得します。
  • CellRange クラスのメソッドを使用して、特定の表示形式の値を追加します。
  • 必要に応じてセルのスタイルを設定します。
  • Workbook.saveToFile() メソッドでワークブックを保存します。
  • Java
import com.spire.xls.*;

import java.util.Calendar;
import java.util.Date;

public class AddFormattedDataExcel {
    public static void main(String[] args) {
        // 新しいワークブックインスタンスを作成
        Workbook workbook = new Workbook();

        // 最初のワークシートを取得
        Worksheet sheet = workbook.getWorksheets().get(0);

        // テキスト値を追加
        sheet.getCellRange("C3").setText("サンプルテキスト");
        // 数値を追加
        sheet.getCellRange("C4").setNumberValue(1234.5678);
        // ブール値を追加
        sheet.getCellRange("C5").setBooleanValue(true);
        // 日付と時刻の値を追加
        sheet.getCellRange("C6").setDateTimeValue(new Date(2024, Calendar.DECEMBER, 12));
        // HTML文字列を追加
        sheet.getCellRange("C7").setHtmlString("太字のテキスト");

        // セルをフォーマット
        sheet.getCellRange("C3:C7").setHorizontalAlignment(HorizontalAlignType.Center);
        sheet.getCellRange("C3:C7").setVerticalAlignment(VerticalAlignType.Center);
        sheet.getCellRange("C3:C7").getCellStyle().getExcelFont().setFontName("Yu Gothic UI");
        sheet.getCellRange("C3:C7").getCellStyle().getExcelFont().setSize(14);
        for (int i = 3; i <= 7; i++) {
            sheet.autoFitColumn(i);
        }

        // ワークブックを保存
        workbook.saveToFile("output/Excelに書式付き値を追加.xlsx", FileFormat.Version2016);
        workbook.dispose();
    }
}

Java で指定した書式の値を Excel セルに追加する

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Spire.OCR for .NET は、プロフェッショナルな OCR ライブラリであり、.NET Framework および .NET Core アプリケーションで画像(JPG、PNG、GIF、BMP、TIFF など)からテキストを認識することをサポートします。本記事では、Spire.OCR for .NET を使用して .NET Framework アプリケーションで画像からテキストを抽出する方法を説明します。

具体的な手順は以下の通りです。

1. Visual Studio でコンソールアプリ (.NET Framework) を作成する

まず、Visual Studio を使用して .NET Framework を対象としたコンソールアプリを作成します。

C#:Spire.OCR for .NET を使用して画像からテキストを抽出する方法

C#:Spire.OCR for .NET を使用して画像からテキストを抽出する方法

2. アプリケーションのプラットフォームターゲットを x64 に変更する

アプリケーションのソリューションエクスプローラーでプロジェクト名を右クリックし、「プロパティ」を選択します。

C#:Spire.OCR for .NET を使用して画像からテキストを抽出する方法

プラットフォームターゲットを x64 に変更します。この手順は必須で、Spire.OCR が 64 ビットプラットフォームのみをサポートしているためです。

C#:Spire.OCR for .NET を使用して画像からテキストを抽出する方法

3. Spire.OCR for .NET をアプリケーションにインストールする

NuGet を使用して Spire.OCR for .NET をインストールします。以下のコマンドを NuGet パッケージマネージャーコンソールで実行してください。

Install-Package Spire.OCR

C#:Spire.OCR for .NET を使用して画像からテキストを抽出する方法

4. Spire.OCR for .NET の新しいモデルをダウンロードする

お使いのオペレーティングシステムに適したモデルを以下のリンクからダウンロードしてください。

次に、パッケージを解凍し、コンピューター上の特定のディレクトリに保存します。この例では、パッケージを "D:\" に保存しました。

C#:Spire.OCR for .NET を使用して画像からテキストを抽出する方法

5. C# で Spire.OCR for .NET を使用して画像からテキストを抽出する

以下のコード例は、C# を使用して Spire.OCR for .NET の新しいモデルで画像からテキストを抽出する方法を示しています。

  • C#
using Spire.OCR;
using System.IO;

namespace NewOCRModel
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // ライセンスキーを設定
            // Spire.OCR.License.LicenseProvider.SetLicenseKey("your-license-key");

            // OcrScanner クラスのインスタンスを作成
            OcrScanner scanner = new OcrScanner();

            // スキャナー構成を設定するために ConfigureOptions クラスのインスタンスを作成
            ConfigureOptions configureOptions = new ConfigureOptions();

            // モデルのパスを設定
            configureOptions.ModelPath = "D:\\win-x64";

            // テキスト認識の言語を設定します。デフォルトは英語です。
            // サポートされている言語には、英語、中国語、中国語繁体字、フランス語、ドイツ語、日本語、韓国語があります。
            configureOptions.Language = "English";

            // 構成オプションをスキャナーに適用
            scanner.ConfigureDependencies(configureOptions);

            // 画像からテキストを抽出
            scanner.Scan("test.png");

            // 抽出したテキストをテキストファイルに保存
            string text = scanner.Text.ToString();
            File.WriteAllText("Output.txt", text);
        }
    }
}

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

システム間でデータを効率的に統合することは、生産性を向上させ、情報に基づいた意思決定を行う上で非常に重要です。この分野で一般的なタスクの 1 つは、Excel とデータベース間でデータを転送することです。Excel ファイルをデータベースにインポートすることで、Excel にはない効率的なクエリ、トランザクションサポート、並行処理管理などの強力な機能を活用できます。一方、データベースのデータを Excel にエクスポートすることで、広く使用されている馴染みのある形式で、詳細な分析、レポート作成、および共有が可能になります。

この記事では、Spire.XLS for .NET と C# を使用して、Excel データをデータベースにインポートする方法と、データベースのデータを Excel ファイルにエクスポートする方法を解説します。

Spire.XLS for .NET をインストールします

まず、Spire.XLS for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.XLS

Excel データをデータベースにインポートする

Spire.XLS for .NET を使うと、Workbook.LoadFromFile() メソッドで Excel ファイルをロードし、CellRange.Value プロパティを利用してセルデータを取得できます。その後、System.Data.SQLite モジュールなどを使用してデータベース操作を行い、データをデータベースに書き込むことが可能です。

以下の手順とコードでは、SQLite を例にして、C# を使って Excel データをデータベースにインポートする方法を示します。

  • Excel ファイルと出力先データベースのパスを定義します。
  • Workbook クラスのインスタンスを作成し、Workbook.LoadFromFile() で Excel ファイルを読み込みます。
  • SQLite データベースを作成するか、既存のデータベースに接続します。
  • ワークブック内の各ワークシートを繰り返し処理し、各ワークシートごとにデータベーステーブルを作成します。
  • ワークシートの最初の行を取得し、列名として使用します。
  • 残りの行とセルを繰り返し処理して、データをデータベースに挿入します。
  • C#
using System.Data.SQLite;
using Spire.Xls;

namespace ExcelToSQLite
{
    class Program
    {
        static void Main(string[] args)
        {
            // Excelファイルのパス
            string excelFilePath = "Sample.xlsx";

            // SQLiteデータベースのパス
            string sqliteFilePath = "output/Database.db";

            // Excelファイルを開く
            Workbook workbook = new Workbook();
            workbook.LoadFromFile(excelFilePath);

            // データベースファイルが存在しない場合、新規作成する
            if (!File.Exists(sqliteFilePath))
            {
                SQLiteConnection.CreateFile(sqliteFilePath);
                Console.WriteLine("新しいSQLiteデータベースファイルが作成されました: output.db");
            }

            // SQLite接続を作成
            using (SQLiteConnection connection = new SQLiteConnection($"Data Source={sqliteFilePath};Version=3;"))
            {
                connection.Open();

                // 各ワークシートを繰り返し処理
                foreach (Worksheet sheet in workbook.Worksheets)
                {
                    string tableName = sheet.Name;

                    // 最初の行を列名として取得
                    var columns = sheet.Rows[0].CellList;
                    string createTableQuery = $"CREATE TABLE IF NOT EXISTS [{tableName}] (";

                    foreach (var column in columns)
                    {
                        createTableQuery += $"[{column.Value}] TEXT,";
                    }
                    createTableQuery = createTableQuery.TrimEnd(',') + ");";

                    // テーブルを作成
                    using (SQLiteCommand createTableCommand = new SQLiteCommand(createTableQuery, connection))
                    {
                        createTableCommand.ExecuteNonQuery();
                    }

                    // データを挿入
                    for (int i = 1; i < sheet.Rows.Length; i++) // 最初の行をスキップ
                    {
                        var row = sheet.Rows[i];
                        string insertQuery = $"INSERT INTO [{tableName}] VALUES (";
                        foreach (var cell in row.CellList)
                        {
                            insertQuery += $"'{cell.Value?.Replace("'", "''")}',"; // SQLインジェクション対策
                        }
                        insertQuery = insertQuery.TrimEnd(',') + ");";

                        using (SQLiteCommand insertCommand = new SQLiteCommand(insertQuery, connection))
                        {
                            insertCommand.ExecuteNonQuery();
                        }
                    }
                }

                connection.Close();
                workbook.Dispose();
            }

            Console.WriteLine("Excelのデータは正常に新しいSQLiteデータベースに書き込まれました!");
        }
    }
}

Excel データをデータベースにインポートする

データベースのデータを Excel ファイルにエクスポートする

SQLite データベースからデータを読み取り、Workbook オブジェクトを使用して新しい Excel ファイルを生成する方法を説明します。

  • データベースと出力 Excel ファイルのパスを定義します。
  • Workbook インスタンスを作成し、デフォルトのワークシートを削除します。
  • データベースに接続し、すべてのテーブル名を取得します。
  • 各テーブルごとにワークシートを作成し、テーブル名をシート名として設定します。
  • テーブルの列名を取得し、ワークシートの最初の行に書き込みます。
  • テーブル内のデータを順次ワークシートに書き込みます。
  • C#
using System.Data;
using System.Data.SQLite;
using Spire.Xls;

namespace SQLiteToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            // SQLiteデータベースのパス
            string sqliteFilePath = "Database.db";

            // Excelファイルのパス
            string excelFilePath = "output/DatabaseToExcel.xlsx";

            // 新しいWorkbookインスタンスを作成
            Workbook workbook = new Workbook();
            // デフォルトのワークシートをクリア
            workbook.Worksheets.Clear();

            // SQLite接続を作成
            using (SQLiteConnection connection = new SQLiteConnection($"Data Source={sqliteFilePath};Version=3;"))
            {
                connection.Open();

                // すべてのテーブル名を取得
                DataTable tables = connection.GetSchema("Tables");

                // 各テーブルを繰り返し処理
                foreach (DataRow tableRow in tables.Rows)
                {
                    string tableName = tableRow["TABLE_NAME"].ToString();

                    // 新しいワークシートを作成
                    Worksheet sheet = workbook.Worksheets.Add(tableName);

                    // テーブルデータを取得
                    string selectQuery = $"SELECT * FROM [{tableName}]";
                    using (SQLiteCommand command = new SQLiteCommand(selectQuery, connection))
                    {
                        using (SQLiteDataReader reader = command.ExecuteReader())
                        {
                            // 列名を取得して、最初の行に書き込む
                            for (int col = 0; col < reader.FieldCount; col++)
                            {
                                sheet.Range[1, col + 1].Value = reader.GetName(col);
                            }
                            // ヘッダーのフォントスタイルを設定
                            sheet.Rows[0].Style.Font.IsBold = true;
                            sheet.Rows[0].Style.Font.Size = 12;

                            // データ行を挿入
                            int rowIndex = 2;
                            while (reader.Read())
                            {
                                for (int col = 0; col < reader.FieldCount; col++)
                                {
                                    sheet.Range[rowIndex, col + 1].Value = reader.GetValue(col).ToString();
                                    // 列幅を自動調整
                                    sheet.AutoFitColumn(col + 1);
                                }
                                // データ行のフォントスタイルを設定
                                sheet.Rows[rowIndex - 1].Style.Font.Size = 11;
                                rowIndex++;
                            }
                        }
                    }
                }

                connection.Close();
            }

            // Excelファイルを保存
            workbook.SaveToFile(excelFilePath);
            workbook.Dispose();
            Console.WriteLine("データは正常にExcelファイルにエクスポートされました!");
        }
    }
}

データベースのデータを Excel ファイルにエクスポートする

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

PDF におけるデジタル署名の検証は、ドキュメントが改ざんされておらず、署名者の真正性が確認できることを保証するために非常に重要です。この検証プロセスは、ドキュメントの整合性や信頼性を維持する上で不可欠です。また、デジタル署名の抽出を行うことで、署名画像や証明書情報などの詳細を取得でき、さらなる検証やアーカイブ目的に活用できます。本記事では、Java で Spire.PDF for Java ライブラリを使用して、PDF 内のデジタル署名を検証および抽出する方法を説明します。

Spire.PDF for Java をインストールします

まず、Spire.PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>10.11.2</version>
    </dependency>
</dependencies>

Java で PDF のデジタル署名を検証する

Spire.PDF for Java は、PdfSignature.verifySignature() メソッドを提供しており、PDF ドキュメント内のデジタル署名の有効性を確認できます。詳細な手順は以下の通りです。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • PdfDocument.Form プロパティを利用して、PDF ドキュメントのフォームを取得します。
  • フォーム内のすべてのフィールドをループ処理し、署名フィールドを見つけます。
  • PdfSignatureFieldWidget.getSignature() メソッドを使用して署名を取得します。
  • PdfSignature.verifySignature() メソッドを用いて署名の有効性を検証します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.fields.PdfField;
import com.spire.pdf.security.PdfSignature;
import com.spire.pdf.widget.PdfFormWidget;
import com.spire.pdf.widget.PdfSignatureFieldWidget;

public class VerifySignature {
    public static void main(String[] args) {
        // PdfDocumentオブジェクトを作成
        PdfDocument pdf = new PdfDocument();
        // PDFドキュメントを読み込む
        pdf.loadFromFile("Sample.pdf");

        // PDFドキュメントのフォームを取得
        PdfFormWidget formWidget = (PdfFormWidget) pdf.getForm();

        if(formWidget.getFieldsWidget().getCount() > 0)
        {
            // フォーム内のすべてのフィールドを反復処理する
            for(int i = 0; i < formWidget.getFieldsWidget().getCount(); i ++)
            {
                PdfField field = formWidget.getFieldsWidget().get(i);
                // 署名フィールドを見つける
                if (field instanceof PdfSignatureFieldWidget)
                {
                    PdfSignatureFieldWidget signatureField = (PdfSignatureFieldWidget) field;
                    // 署名を取得
                    PdfSignature signature = signatureField.getSignature();
                    // 署名を検証
                    boolean valid = signature.verifySignature();
                    if(valid)
                    {
                        System.out.print("署名は有効です!");
                    }
                    else
                    {
                        System.out.print("署名は無効です!");
                    }
                }
            }
        }
    }
}

Java で PDF のデジタル署名を検証する

Java で署名済み PDF が改ざんされたかを検出する

署名済みの PDF ドキュメントが改ざんされているかを確認するには、PdfSignature.VerifyDocModified() メソッドを使用します。詳細な手順は以下の通りです。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • PdfDocument.Form プロパティを利用して、PDFドキュメントのフォームを取得します。
  • フォーム内のすべてのフィールドをループ処理し、署名フィールドを見つけます。
  • PdfSignatureFieldWidget.getSignature() メソッドを使用して署名を取得します。
  • PdfSignature.VerifyDocModified() メソッドを用いて、署名後にドキュメントが改ざんされていないかを検証します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.fields.PdfField;
import com.spire.pdf.security.PdfSignature;
import com.spire.pdf.widget.PdfFormWidget;
import com.spire.pdf.widget.PdfSignatureFieldWidget;

public class CheckIfSignedPdfIsModified {
    public static void main(String[] args) {
        // PdfDocumentオブジェクトを作成
        PdfDocument pdf = new PdfDocument();
        // PDFドキュメントを読み込む
        pdf.loadFromFile("Sample.pdf");

        // PDFドキュメントのフォームを取得
        PdfFormWidget formWidget = (PdfFormWidget) pdf.getForm();

        if(formWidget.getFieldsWidget().getCount() > 0) {
            // フォーム内のすべてのフィールドを反復処理する
            for (int i = 0; i < formWidget.getFieldsWidget().getCount(); i++) {
                PdfField field = formWidget.getFieldsWidget().get(i);
                // 署名フィールドを見つける
                if (field instanceof PdfSignatureFieldWidget) {
                    PdfSignatureFieldWidget signatureField = (PdfSignatureFieldWidget) field;
                    // 署名を取得
                    PdfSignature signature = signatureField.getSignature();
                    // 署名を検証
                    boolean modified = signature.verifyDocModified();
                    if(modified)
                    {
                        System.out.print("ドキュメントは変更されています!");
                    }
                    else
                    {
                        System.out.print("ドキュメントは変更されていません!");
                    }
                }
            }
        }
    }
}

Java で署名済み PDF が改ざんされたかを検出する

Java で PDF から署名画像と証明書情報を抽出する

PDF から署名画像および証明書情報を抽出するには、PdfFormWidget.extractSignatureAsImages() メソッドと PdfSignature.getCertificate().toString() メソッドを使用します。詳細な手順は以下の通りです。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • PdfDocument.Form プロパティを利用して、PDF ドキュメントのフォームを取得します。
  • PdfFormWidget.extractSignatureAsImages() メソッドを使用して署名画像を抽出し、各画像をファイルとして保存します。
  • フォーム内のすべてのフィールドをループ処理し、署名フィールドを見つけます。
  • PdfSignatureFieldWidget.getSignature() メソッドを使用して署名を取得します。
  • PdfSignature.getCertificate().toString() メソッドを用いて、署名の証明書情報を取得します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.fields.PdfField;
import com.spire.pdf.security.PdfCertificate;
import com.spire.pdf.security.PdfSignature;
import com.spire.pdf.widget.PdfFormWidget;
import com.spire.pdf.widget.PdfSignatureFieldWidget;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class ExtractSignatureImage {
    public static void main(String[] args) {
        // PdfDocumentオブジェクトを作成
        PdfDocument pdf = new PdfDocument();
        // PDFドキュメントを読み込む
        pdf.loadFromFile("Sample.pdf");

        // PDFドキュメントのフォームを取得
        PdfFormWidget formWidget = (PdfFormWidget) pdf.getForm();

        // 署名画像を抽出
        Image[] images = formWidget.extractSignatureAsImages();
        // 画像を反復処理し、それぞれの画像をファイルに保存
        for (int i = 0; i < images.length; i++) {
            try {
                // ImageオブジェクトをBufferedImageに変換
                BufferedImage bufferedImage = (BufferedImage) images[i];
                // 出力ファイルのパスを定義
                File outputFile = new File("output\\cert\\signature_" + i + ".png");
                // 画像をPNGファイルとして保存
                ImageIO.write(bufferedImage, "png", outputFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        // 証明書情報を保存するテキストファイルを作成
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("output\\cert\\certificate_info.txt"))) {
            if (formWidget.getFieldsWidget().getCount() > 0) {
                // フォーム内のすべてのフィールドを反復処理
                for (int i = 0; i < formWidget.getFieldsWidget().getCount(); i++) {
                    PdfField field = formWidget.getFieldsWidget().get(i);
                    // 署名フィールドを見つける
                    if (field instanceof PdfSignatureFieldWidget) {
                        PdfSignatureFieldWidget signatureField = (PdfSignatureFieldWidget) field;
                        // 署名を取得
                        PdfSignature signature = signatureField.getSignature();

                        // 署名の証明書情報を取得
                        String certificateInfo = signature.getCertificate() != null ? signature.getCertificate().toString() : "証明書がありません";

                        // 証明書情報をテキストファイルに書き込む
                        writer.write("証明書情報: \n" + certificateInfo);
                        writer.write("-----------------------------------\n");
                    }
                }
            } else {
                writer.write("署名フィールドが見つかりませんでした。");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Java で PDF から署名画像と証明書情報を抽出する

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

デジタル技術の急速な発展に伴い、多くの企業が情報を電子的に作成、保存、送信するようになっています。電子ドキュメントの信頼性と真正性を確保するために、デジタル署名が広く利用されています。本記事では、Spire.PDF for Java を使用して PDF に見えるデジタル署名または見えないデジタル署名を追加する方法、およびデジタル署名を削除する方法について解説します。

Spire.PDF for Java をインストールします

まず、Spire.PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>10.11.2</version>
    </dependency>
</dependencies>

PDF に見えないデジタル署名を追加する

以下は、Spire.PDF for Java を使用して PDF に見えないデジタル署名を追加する手順です。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して PDF ファイルを読み込みます。
  • PdfCertificate オブジェクトを初期化し、pfx 証明書ファイルを読み込みます。
  • PdfSignature オブジェクトを証明書に基づいて作成します。
  • PdfSignature.setDocumentPermissions() メソッドを使用してドキュメントの権限を設定します。
  • PdfDocument.saveToFile() メソッドを使用してドキュメントを保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.security.PdfCertificate;
import com.spire.pdf.security.PdfCertificationFlags;
import com.spire.pdf.security.PdfSignature;

public class AddInvisibleSignature {

    public static void main(String[] args) {

        // PdfDocumentオブジェクトを作成
        PdfDocument doc = new PdfDocument();

        // サンプルPDFファイルを読み込む
        doc.loadFromFile("Sample.pdf");

        // pfx証明書を読み込む
        PdfCertificate cert = new PdfCertificate("gary.pfx", "e-iceblue");

        // PdfSignatureオブジェクトを作成
        PdfSignature signature = new PdfSignature(doc, doc.getPages().get(doc.getPages().getCount() - 1), cert, "gary");

        // ドキュメントの権限を設定(変更を禁止し、フォーム入力を許可)
        signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes);
        signature.setDocumentPermissions(PdfCertificationFlags.Allow_Form_Fill);

        // 別のPDFファイルとして保存
        doc.saveToFile("output/見えないPDF署名.pdf");
        doc.close();
    }
}

PDF に見えないデジタル署名を追加する

PDF に見えるデジタル署名を追加する

以下は、Spire.PDF for Java を使用して PDF に見えるデジタル署名を追加する手順です。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して PDF ファイルを読み込みます。
  • PdfCertificate オブジェクトを初期化し、pfx 証明書ファイルを読み込みます。
  • PdfSignature オブジェクトを作成し、ドキュメント内での署名の位置とサイズを指定します。
  • 署名の詳細を設定します(例:日付、名前、場所、理由、手書き署名画像、ドキュメント権限など)。
  • PdfDocument.saveToFile() メソッドを使用してドキュメントを保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.graphics.*;
import com.spire.pdf.security.GraphicMode;
import com.spire.pdf.security.PdfCertificate;
import com.spire.pdf.security.PdfCertificationFlags;
import com.spire.pdf.security.PdfSignature;

import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;

public class AddVisibleSignature {

    public static void main(String[] args) {

        // PdfDocumentオブジェクトを作成
        PdfDocument doc = new PdfDocument();

        // サンプルPDFファイルを読み込む
        doc.loadFromFile("Sample.pdf");

        // pfx証明書を読み込む
        PdfCertificate cert = new PdfCertificate("gary.pfx", "e-iceblue");

        // PdfSignatureオブジェクトを作成し、その位置とサイズを指定
        PdfSignature signature = new PdfSignature(doc, doc.getPages().get(0), cert, "gary");
        Rectangle2D rect = new Rectangle2D.Float();
        rect.setFrame(new Point2D.Float(
                        (float) doc.getPages().get(0).getActualSize().getWidth() - 320,
                        (float) doc.getPages().get(0).getActualSize().getHeight() - 120),
                new Dimension(270, 100));
        signature.setBounds(rect);

        // グラフィックモードを設定
        signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail);

        // 署名内容を設定
        signature.setNameLabel("署名者:");
        signature.setName("gary");
        signature.setContactInfoLabel("連絡先:");
        signature.setContactInfo("02881705109");
        signature.setDateLabel("日付:");
        signature.setDate(new java.util.Date());
        signature.setLocationInfoLabel("場所:");
        signature.setLocationInfo("CD");
        signature.setReasonLabel("理由:");
        signature.setReason("このドキュメントの証明書");
        signature.setDistinguishedNameLabel("DN:");
        signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName());
        signature.setSignImageSource(PdfImage.fromFile("Signature.png"));

        // 署名フォントを設定
        signature.setSignDetailsFont(new PdfTrueTypeFont(new Font("Yu Gothic UI", Font.PLAIN, 10), true));

        // ドキュメントの権限を設定
        signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes);
        signature.setCertificated(true);

        // ファイルに保存
        doc.saveToFile("output/可視PDF署名.pdf");
        doc.close();
    }
}

PDF に見えるデジタル署名を追加する

PDF からデジタル署名を削除する

以下は、Spire.PDF for Java を使用して PDF からデジタル署名を削除する手順です。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.getForm() メソッドを使用して、ドキュメントからフォームウィジェットを取得します。
  • ウィジェットをループ処理し、特定のウィジェットが PdfSignatureFieldWidget であるかを確認します。
  • PdfFieldCollection.remove() メソッドを使用して署名ウィジェットを削除します。
  • PdfDocument.saveToFile() メソッドを使用してドキュメントを保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.widget.PdfFieldWidget;
import com.spire.pdf.widget.PdfFormWidget;
import com.spire.pdf.widget.PdfSignatureFieldWidget;

public class DeleteSignatures {

    public static void main(String[] args) {

        // PdfDocumentオブジェクトを作成(署名付きPDFをロード)
        PdfDocument doc = new PdfDocument("output/見えないPDF署名.pdf");

        // ドキュメントからフォームウィジェットを取得
        PdfFormWidget widgets = (PdfFormWidget) doc.getForm();

        // ウィジェットをループ処理
        for (int i = 0; i < widgets.getFieldsWidget().getList().size(); i++)
        {
            // 特定のウィジェットを取得
            PdfFieldWidget widget = (PdfFieldWidget)widgets.getFieldsWidget().getList().get(i);

            // ウィジェットがPdfSignatureFieldWidgetかどうかを判定
            if (widget instanceof PdfSignatureFieldWidget)
            {
                // 署名ウィジェットを削除
                widgets.getFieldsWidget().remove(widget);
            }
        }

        // ドキュメントを別のPDFファイルに保存
        doc.saveToFile("output/PDF署名の削除.pdf");
        doc.close();
    }
}

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

PDF 内のテキストや画像の座標を取得することで、要素を正確に特定でき、コンテンツの抽出が容易になります。これは特にデータ分析において重要で、複雑なレイアウトから必要な情報を引き出す際に役立ちます。また、座標を把握することで、適切な場所に注釈、マーク、スタンプを追加できるようになり、重要な箇所を強調表示したり、コメントを正確に追加したりすることで、ドキュメントのインタラクティブ性やコラボレーションを向上させることができます。

この記事では、Java で Spire.PDF for Java ライブラリを使用して、PDF ドキュメント内の特定のテキストや画像の座標を取得する方法を示します。

Spire.PDF for Java をインストールします

まず、Spire.PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>10.11.2</version>
    </dependency>
</dependencies>

Spire.PDF における座標系

Spire.PDF for Java を使用して既存の PDF ドキュメントを操作する場合、座標系の原点はページの左上隅に位置していることに注意してください。X 軸は右方向に伸び、y 軸は下方向に伸びています。この座標系は以下の図で説明されています。

Spire.PDF における座標系

PDF 内の特定のテキストの座標を取得する

まず、PdfTextFinder.find() メソッドを使用して、ページ内の特定のテキストのすべての出現箇所を検索し、その結果を PdfTextFragment のリストとして取得します。その後、PdfTextFragment.getPositions() メソッドを使用して、指定したテキストの最初の出現箇所の座標を取得することができます。

以下は、PDF 内の特定のテキストの座標を取得する手順です:

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して PDF ファイルを読み込みます。
  • PdfDocument.getPages().get() メソッドを使用して特定のページを取得します。
  • PdfTextFinder.find() メソッドを使用して、ページ内の指定したテキストのすべての出現箇所を検索し、その結果を PdfTextFragment のリストとして取得します。
  • リスト内の特定の PdfTextFragment にアクセスし、PdfTextFragment.getPositions() メソッドを使用してそのフラグメントの座標を取得します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextFindOptions;
import com.spire.pdf.texts.PdfTextFinder;
import com.spire.pdf.texts.PdfTextFragment;
import com.spire.pdf.texts.TextFindParameter;

import java.awt.geom.Point2D;
import java.util.EnumSet;
import java.util.List;

public class GetTextCoordinates {

    public static void main(String[] args) {

        // PdfDocumentオブジェクトを作成
        PdfDocument doc = new PdfDocument();

        // PDFファイルを読み込む
        doc.loadFromFile("Sample.pdf");

        // 特定のページを取得
        PdfPageBase page = doc.getPages().get(0);

        // PdfTextFinderオブジェクトを作成
        PdfTextFinder finder = new PdfTextFinder(page);

        // 検索オプションを設定
        PdfTextFindOptions options = new PdfTextFindOptions();
        options.setTextFindParameter(EnumSet.of(TextFindParameter.WholeWord));
        finder.setOptions(options);

        // テキストのすべてのインスタンスを検索
        List fragments = finder.find("海洋哺乳類");

        // 特定のテキストフラグメントを取得
        PdfTextFragment fragment = fragments.getFirst();

        // テキストの位置を取得(テキストが複数行にまたがっている場合、複数の位置が返される)
        Point2D[] positions = fragment.getPositions();

        // 最初の位置を取得
        double x = positions[0].getX();
        double y = positions[0].getY();

        // 結果を表示
        System.out.printf("テキストの位置: (%f, %f).%n", x, y);
    }
}

PDF 内の特定のテキストの座標を取得する

PDF 内の特定の画像の座標を取得する

まず、PdfImageHelper.getImagesInfo() メソッドを使用して、指定したページ内のすべての画像情報を取得し、その結果を PdfImageInfo の配列として保存します。その後、PdfImageInfo.getBounds().getX() および PdfImageInfo.getBounds().getY() メソッドを使用して、特定の画像の X 座標および Y 座標を取得します。

以下は、PDF 内の特定の画像の座標を取得する手順です:

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して PDF ファイルを読み込みます。
  • PdfDocument.getPages().get() メソッドを使用して特定のページを取得します。
  • PdfImageHelper.getImagesInfo() メソッドを使用してページ内のすべての画像情報を取得し、その結果を PdfImageInfo の配列として保存します。
  • PdfImageInfo.getBounds().getX() および PdfImageInfo.getBounds().getY() メソッドを使用して、特定の画像のX座標およびY座標を取得します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.utilities.PdfImageHelper;
import com.spire.pdf.utilities.PdfImageInfo;

public class GetImageCoordinates {

    public static void main(String[] args) {

        // PdfDocumentオブジェクトを作成
        PdfDocument doc = new PdfDocument();

        // PDFファイルを読み込む
        doc.loadFromFile("Sample.pdf");

        // 特定のページを取得
        PdfPageBase page = doc.getPages().get(0);

        // PdfImageHelperオブジェクトを作成
        PdfImageHelper helper = new PdfImageHelper();

        // ページから画像情報を取得
        PdfImageInfo[] imageInfo = helper.getImagesInfo(page);

        // 最初の画像のX, Y座標を取得
        double x = imageInfo[0].getBounds().getX();
        double y = imageInfo[0].getBounds().getY();

        // 結果を表示
        System.out.printf("画像の位置: (%f, %f).%n", x, y);
    }
}

PDF 内の特定の画像の座標を取得する

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

OCR(光学文字認識)技術は、画像からテキストを抽出するための主要な方法です。Spire.OCR for Java は、Java プロジェクトにおいて画像からテキストをスキャンして抽出するための迅速かつ効率的なソリューションを提供します。本記事では、Spire.OCR for Java を使用して、画像からテキストを認識・抽出する方法を解説します。

Spire.OCR for Java のインストール手順

Spire.OCR for Java を使用して画像内のテキストをスキャンおよび認識するには、まず Spire.OCR.jar ファイルとモデルファイルを Java プロジェクトにインポートする必要があります。

以下は、Spire.OCR for Java とモデルファイルを Java プラグラムにインストールする手順です:

1. IntelliJ IDEA で Java プロジェクトを作成する

最初に、IntelliJ IDEA を使用して新しい Java プロジェクトを作成します。

Java:画像からテキストを抽出する方法(OCR)

2. プロジェクトに Spire.OCR.jar を追加する

オプション 1:Maven を使用して Spire.OCR for Java をインストールする

Maven を使用している場合、次のコードをプロジェクトの pom.xml ファイルに追加することで、Spire.OCR for Java をインストールできます:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.ocr</artifactId>
        <version>1.9.19</version>
    </dependency>
</dependencies>

オプション 2:Spire.OCR.jar を手動でインポートする

まず、以下のリンクから Spire.OCR for Java をダウンロードし、特定のディレクトリに解凍します:

https://jp.e-iceblue.com/download/spire-ocr-for-java.html

次に、IntelliJ IDEA で「ファイル」>「プロジェクト構造」>「モジュール」>「依存関係」に移動します。依存関係のペインで「+」ボタンをクリックし、「JARs または ディレクトリ」を選択します。Spire.OCR for Java が保存されているディレクトリに移動し、lib フォルダを開いて Spire.OCR.jar ファイルを選択し、OK をクリックしてプロジェクトの依存関係として追加します。

Java:画像からテキストを抽出する方法(OCR)

3. その他の依存ファイルをダウンロードして配置する

ご使用のオペレーティングシステムに適したモデルを以下のリンクからダウンロードしてください。

次に、パッケージを解凍し、コンピューターの特定のディレクトリに保存します。この例では、パッケージを「D:\」に保存しました。

Java:画像からテキストを抽出する方法(OCR)

Spire.OCR for Java を使用して画像からテキストを抽出する

以下は、Spire.OCR for Java を使用して画像からテキストを認識および抽出するためのコード例です:

  • Java
import com.spire.ocr.*;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            // OcrScanner クラスのインスタンスを作成
            OcrScanner scanner = new OcrScanner();

            // スキャナー設定を行うために ConfigureOptions クラスのインスタンスを作成
            ConfigureOptions configureOptions = new ConfigureOptions();

            // 新しいモデルへのパスを設定
            configureOptions.setModelPath("D:\\win-x64");

            // テキスト認識の言語を設定。デフォルトは英語です。
            // サポートされている言語には、英語、中国語、繁体字中国語、フランス語、ドイツ語、日本語、韓国語があります。
            // English, Chinese, Chinesetraditional, French, German, Japanese, Korean
            configureOptions.setLanguage("Japanese");

            // スキャナーに設定オプションを適用
            scanner.ConfigureDependencies(configureOptions);

            // 画像からテキストを抽出
            scanner.scan("Sample.png");

            // 抽出したテキストをテキストファイルに保存
            saveTextToFile(scanner, "output.txt");

        } catch (OcrException e) {
            e.printStackTrace();
        }
    }

    private static void saveTextToFile(OcrScanner scanner, String filePath) {
        try {
            String text = scanner.getText().toString();
            try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
                writer.write(text);
            }
        } catch (IOException | OcrException e) {
            e.printStackTrace();
        }
    }
}

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

PDF ドキュメントに四角形、楕円、線などの図形を描画することで、ドキュメントの視覚的効果を高め、重要なポイントを強調することができます。レポートやプレゼンテーション、論文を作成する際、文章だけでは表現が難しい概念やデータの関係性を図形で補足すると、情報をより明確に伝えられます。本記事では、Java で Spire.PDF for Java を使用して PDF ドキュメントに図形を描画する方法を説明します。

Spire.PDF for Java をインストールします

まず、Spire.PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>10.10.7</version>
    </dependency>
</dependencies>

Java で PDF に線を描画する

Spire.PDF for Java では、PdfPageBase.getCanvas().drawLine(PdfPen pen, float x1, float y1, float x2, float y2) メソッドを使用して、指定した位置に線を描画できます。また、PDF ペンのスタイルを変更することで、実線や点線などの異なる線を描画可能です。以下に詳細な手順を示します。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.getPages().add() メソッドを使用して PDF ページを追加します。
  • PdfPageBase.getCanvas().save() メソッドで現在の描画状態を保存します。
  • 線の開始位置(x, y 座標)と長さを定義します。
  • 色と太さを指定して PdfPen オブジェクトを作成します。
  • PdfPageBase.getCanvas().drawLine() メソッドを使用して、ペンで実線を描画します。
  • ペンのスタイルを点線に変更し、点線パターンを設定します。
  • 点線スタイルのペンを使用して点線を描画します。
  • PdfPageBase.getCanvas().restore() メソッドで以前の描画状態を復元します。
  • PdfDocument.saveToFile() メソッドで結果を PDF ファイルとして保存します。
  • Java
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;

import java.awt.*;

public class drawLinePDF {
    public static void main(String[] args) {
        // PdfDocumentオブジェクトを作成します
        PdfDocument pdf = new PdfDocument();

        // ページを追加します
        PdfPageBase page = pdf.getPages().add();

        // 現在の描画状態を保存します
        PdfGraphicsState state = page.getCanvas().save();

        // 線の開始位置のXおよびY座標を指定します
        float x = 100;
        float y = 70;

        // 線の長さを指定します
        float width = 300;

        // 青色で太さ2のPDFペンを作成します
        PdfPen pen = new PdfPen(new PdfRGBColor(Color.BLUE), 2f);

        // ペンを使用してページに実線を描画します
        page.getCanvas().drawLine(pen, x, y, x + width, y);

        // ペンのスタイルを点線に設定します
        pen.setDashStyle(PdfDashStyle.Dash);

        // 点線のパターンを設定します
        pen.setDashPattern(new float[]{1, 4, 1});

        // ペンを使用してページに点線を描画します
        page.getCanvas().drawLine(pen, x, y+30, x + width, y+30);

        // 保存した描画状態を復元します
        page.getCanvas().restore(state);

        // PDFドキュメントを保存します
        pdf.saveToFile("output/PDFで線を描く.pdf");

        // ドキュメントを閉じ、リソースを解放します
        pdf.close();
        pdf.dispose();
    }
}

JavaでPDFに線を描いた結果

Java で PDF に円弧や扇形を描画する

指定した位置に弧や扇形を描画するには、PdfPageBase.getCanvas().drawArc() および PdfPageBase.getCanvas().drawPie() メソッドを使用します。以下はその詳細手順です。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.getPages().add() メソッドを使用して PDF ページを追加します。
  • PdfPageBase.getCanvas().save() メソッドで現在の描画状態を保存します。
  • 色と太さを指定して PdfPen オブジェクトを作成します。
  • PdfPageBase.getCanvas().drawArc() メソッドを使用して弧を描画します。
  • PdfPageBase.getCanvas().drawPie() メソッドを使用して扇形を描画します。
  • PdfPageBase.getCanvas().restore() メソッドで以前の描画状態を復元します。
  • PdfDocument.saveToFile() メソッドで結果を PDF ファイルとして保存します。
  • Java
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Rectangle2D;

public class drawArcAndPiePDF {
    public static void main(String[] args) {
        // PdfDocumentオブジェクトを作成します
        PdfDocument pdf = new PdfDocument();

        // ページを追加します
        PdfPageBase page = pdf.getPages().add();

        // 現在の描画状態を保存します
        PdfGraphicsState state = page.getCanvas().save();

        // 指定した色と太さ2のPDFペンを作成します
        PdfPen pen = new PdfPen(new PdfRGBColor(new Color(139,0,0)), 2f);

        // 弧の開始角度と掃引角度を指定します
        float startAngle = 90;
        float sweepAngle = 230;
        // ペンを使用してページに弧を描画します
        Rectangle2D.Float rect = new Rectangle2D.Float(30, 60, 120, 120);
        page.getCanvas().drawArc(pen, rect, startAngle, sweepAngle);

        // 扇形チャートの開始角度と掃引角度を指定します
        float startAngle1 = 0;
        float sweepAngle1 = 330;
        // ペンを使用してページに扇形チャートを描画します
        Rectangle2D.Float rect2 = new Rectangle2D.Float(200, 60, 120, 120);
        page.getCanvas().drawPie(pen, rect2, startAngle1, sweepAngle1);

        // 保存した描画状態を復元します
        page.getCanvas().restore(state);

        // PDFドキュメントを保存します
        pdf.saveToFile("output/PDFに円弧や扇形を描画.pdf");

        // ドキュメントを閉じ、リソースを解放します
        pdf.close();
        pdf.dispose();
    }
}

JavaでPDFに円弧と扇形を描画した結果

Java で PDF に長方形を描画する

Spire.PDF for Java では、PdfPageBase.getCanvas().drawRectangle() メソッドを使用して PDF ページ上に長方形を描画できます。このメソッドに異なるパラメータを渡すことで、位置やサイズ、塗りつぶしの色を指定可能です。以下に詳細手順を示します。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.getPages().add() メソッドを使用して PDF ページを追加します。
  • PdfPageBase.getCanvas().save() メソッドで現在の描画状態を保存します。
  • 色と太さを指定して PdfPen オブジェクトを作成します。
  • PdfPageBase.getCanvas().drawRectangle() メソッドを使用して長方形を描画します。
  • PdfLinearGradientBrush オブジェクトを作成して線形グラデーションを設定します。
  • PdfPageBase.getCanvas().drawRectangle() メソッドを使用してグラデーションで塗りつぶした長方形を描画します。
  • PdfPageBase.getCanvas().restore() メソッドで以前の描画状態を復元します。
  • PdfDocument.saveToFile() メソッドで結果を PDF ファイルとして保存します。
  • Java
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Rectangle2D;

public class drawRectanglesPDF {
    public static void main(String[] args) {
        // PdfDocumentオブジェクトを作成します
        PdfDocument pdf = new PdfDocument();

        // ページを追加します
        PdfPageBase page = pdf.getPages().add();

        // 現在の描画状態を保存します
        PdfGraphicsState state = page.getCanvas().save();

        // 指定した色と太さ1.5のPDFペンを作成します
        PdfPen pen = new PdfPen(new PdfRGBColor(Color.magenta), 1.5f);

        // ペンを使用してページに長方形を描画します
        page.getCanvas().drawRectangle(pen, new Rectangle(20, 60, 150, 90));

        // 線形グラデーションブラシを作成します
        Rectangle2D.Float rect = new Rectangle2D.Float(220, 60, 150, 90);
        PdfLinearGradientBrush linearGradientBrush = new PdfLinearGradientBrush(
                rect,
                new PdfRGBColor(Color.white),
                new PdfRGBColor(Color.blue),
                PdfLinearGradientMode.Vertical
        );

        // 指定した色と太さ0.5の新しいPDFペンを作成します
        PdfPen pen1 = new PdfPen(new PdfRGBColor(Color.black), 0.5f);

        // 新しいペンと線形グラデーションブラシを使用して塗りつぶしの長方形を描画します
        page.getCanvas().drawRectangle(pen1, linearGradientBrush, rect);

        // 保存した描画状態を復元します
        page.getCanvas().restore(state);

        // PDFドキュメントを保存します
        pdf.saveToFile("output/PDFで矩形を描く.pdf");

        // ドキュメントを閉じ、リソースを解放します
        pdf.close();
        pdf.dispose();
    }
}

 JavaでPDFに矩形を描画した結果

Java で PDF に楕円を描画する

PdfPageBase.getCanvas().drawEllipse() メソッドを使用すると、PDF ページに楕円を描画できます。PDF ペンまたは塗りつぶし用ブラシを使用することで、異なるスタイルの楕円を描画可能です。以下に詳細手順を示します。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.getPages().add() メソッドを使用して PDF ページを追加します。
  • PdfPageBase.getCanvas().save() メソッドで現在の描画状態を保存します。
  • 色と太さを指定して PdfPen オブジェクトを作成します。
  • PdfPageBase.getCanvas().drawEllipse() メソッドを使用して楕円を描画します。
  • PdfSolidBrush オブジェクトを作成します。
  • PdfPageBase.getCanvas().drawEllipse() メソッドを使用して塗りつぶした楕円を描画します。
  • PdfPageBase.getCanvas().restore() メソッドで以前の描画状態を復元します。
  • PdfDocument.saveToFile() メソッドで結果を PDF ファイルとして保存します。
  • Java
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;

import java.awt.*;

public class drawEllipsesPDF {
    public static void main(String[] args) {
        // PdfDocumentオブジェクトを作成します
        PdfDocument pdf = new PdfDocument();

        // ページを追加します
        PdfPageBase page = pdf.getPages().add();

        // 現在の描画状態を保存します
        PdfGraphicsState state = page.getCanvas().save();

        // 指定した色と太さのPDFペンを作成します
        PdfPen pen = new PdfPen(new PdfRGBColor(new Color(95, 158, 160)), 1f);
        // ペンを使用してページに楕円を描画します
        page.getCanvas().drawEllipse(pen, 30, 60, 150, 100);

        // 塗りつぶし用の指定した色のブラシを作成します
        PdfBrush brush = new PdfSolidBrush(new PdfRGBColor(new Color(95, 158, 160)));
        // ブラシを使用してページに塗りつぶし楕円を描画します
        page.getCanvas().drawEllipse(brush, 220, 60, 150, 100);

        // 保存した描画状態を復元します
        page.getCanvas().restore(state);

        // PDFドキュメントを保存します
        pdf.saveToFile("output/PDFで楕円を描く.pdf");

        // ドキュメントを閉じ、リソースを解放します
        pdf.close();
        pdf.dispose();
    }
}

JavaでPDFに楕円を描いた結果

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

PDF ドキュメントをインタラクティブな要素で強化することは、ユーザーエンゲージメントや機能性向上のためにますます重要になっています。ドキュメントページへのリンク、JavaScript の実行、またはファイルオープンをトリガーするようなアクションを PDF に追加することで、さまざまなプロフェッショナルおよび個人用途でのドキュメントの利便性を大幅に向上させることができます。Java で Spire.PDF for Java ライブラリを使用して、こうした動的な機能を組み込むことで、開発者は PDF ドキュメントに新たな可能性をもたらし、より多機能でユーザーフレンドリーなドキュメントを作成できます。

本記事では、Spire.PDF for Java を使用して PDF ドキュメントにアクションを追加する方法を紹介します。

Spire.PDF for Java をインストールします

まず、Spire. PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>10.10.7</version>
    </dependency>
</dependencies>

Spire.PDF for Java で PDF にアクションを追加する方法

Spire.PDF for Java は、PDF ドキュメントにナビゲーション アクション、ファイル開くアクション、音声アクション、JavaScript アクションなど、さまざまなアクションを追加できる機能を提供します。以下は、よく使用されるアクションに対応するクラスとその説明を示す一覧です。

クラス名 説明
PdfGoToAction 現在のドキュメント内の特定の位置に移動するアクションを表します。
PdfLaunchAction ファイルを起動して開くアクションを表します。
PdfJavaScriptAction JavaScript コードを実行するアクションを表します。
PdfSoundAction 音声を再生するアクションを表します。

その他のアクションクラスとその詳細については、Spire.PDF for Java アクション API リファレンスをご参照ください。

PDF ドキュメントにアクションを追加する方法は主に次の 2 つです。

1. アクション注釈を使用する方法

この方法では、アクションを作成し、ページ上の注釈にリンクさせます。注釈がクリックされるとアクションが表示および実行されます。

手順:

  • PdfDocument インスタンスを作成し、PdfDocument.LoadFromFile() メソッドを使用してPDFドキュメントを読み込みます。
  • アクションインスタンスを作成し、そのプロパティを設定します。
  • 必要に応じて、アクションを示すテキストや画像を描画します。
  • 作成したアクションインスタンスを使用して PdfActionAnnotation インスタンスを作成し、ページ上の位置を指定します。
  • PdfPageBase.getAnnotations.add() メソッドを使用して、アクション注釈をページに追加します。
  • PdfDocument.SaveToFile() メソッドを使用してドキュメントを保存します。

2. ドキュメントイベントにアクションを割り当てる方法

アクションは、ドキュメントの開閉や印刷などのイベントに割り当てることもできます。これらのアクションは、指定されたイベントが発生したときに自動的に実行されます。

手順:

  • PdfDocument インスタンスを作成し、PdfDocument.LoadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • アクションインスタンスを作成し、そのプロパティを設定します。
  • 以下のメソッドを使用して、アクションをドキュメントイベントに割り当てます。
    • PdfDocument.setAfterOpenAction()
    • PdfDocument.setAfterPrintAction()
    • PdfDocument.setAfterSaveAction()
    • PdfDocument.setBeforeCloseAction()
    • PdfDocument.setBeforePrintAction()
    • PdfDocument.setBeforeSaveAction()
  • PdfDocument.SaveToFile() メソッドを使用してドキュメントを保存します。

Java で PDF にナビゲーション アクションを追加

PdfGoToAction クラスを使用して、PDF ドキュメント内の特定の位置にジャンプするナビゲーションアクションを作成できます。以下は、PDF ドキュメントにナビゲーションボタンを作成する Java コードの例です。

  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.actions.PdfGoToAction;
import com.spire.pdf.annotations.PdfActionAnnotation;
import com.spire.pdf.general.PdfDestination;
import com.spire.pdf.graphics.PdfBrushes;
import com.spire.pdf.graphics.PdfStringFormat;
import com.spire.pdf.graphics.PdfTextAlignment;
import com.spire.pdf.graphics.PdfTrueTypeFont;

import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;

public class AddNavigationActionPDF {
    public static void main(String[] args) {
        // PdfDocumentインスタンスを作成
        PdfDocument pdf = new PdfDocument();

        // PDFファイルを読み込む
        pdf.loadFromFile("Sample.pdf");

        // PdfDestinationオブジェクトを作成
        PdfDestination destination = new PdfDestination(2, new Point2D.Float(0, 0), 0.8f);
        // PdfDestinationオブジェクトを使用してPdfGoToActionオブジェクトを作成
        PdfGoToAction goToAction = new PdfGoToAction(destination);

        // 最初のページに矩形と案内文を描画
        Rectangle2D rect = new Rectangle2D.Float(20, 30, 150, 20);
        pdf.getPages().get(0).getCanvas().drawRectangle(PdfBrushes.getLightGray(), rect);
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Gothic UI", Font.BOLD, 12), true);
        PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Center);
        pdf.getPages().get(0).getCanvas().drawString("ページ2へ移動するにはクリック", font, PdfBrushes.getBlack(), rect, format);

        // PdfGoToActionオブジェクトを使用してPdfActionAnnotationオブジェクトを作成
        PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, goToAction);

        // 最初のページに注釈を追加
        pdf.getPages().get(0).getAnnotations().add(actionAnnotation);

        // ドキュメントを保存
        pdf.saveToFile("output/PDFナビゲーション・アクション.pdf");
        pdf.close();
    }
}

Java で PDF にナビゲーション アクションを追加

Java で PDF にファイル開くアクションを追加

開発者は、PdfLaunchAction クラスを使用して、PDF ドキュメントにファイル開くアクションを作成できます。以下に、PDF ドキュメントにファイルオープンアクションを追加する Java コードの例を示します。

  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.actions.PdfFilePathType;
import com.spire.pdf.actions.PdfLaunchAction;
import com.spire.pdf.annotations.PdfActionAnnotation;
import com.spire.pdf.graphics.PdfBrushes;
import com.spire.pdf.graphics.PdfStringFormat;
import com.spire.pdf.graphics.PdfTextAlignment;
import com.spire.pdf.graphics.PdfTrueTypeFont;

import java.awt.*;
import java.awt.geom.Rectangle2D;

public class AddFileOpenActionPDF {
    public static void main(String[] args) {
        // PdfDocumentインスタンスを作成
        PdfDocument pdf = new PdfDocument();

        // PDFファイルを読み込む
        pdf.loadFromFile("Sample.pdf");

        // PdfLaunchActionオブジェクトを作成し、ファイルパスを設定
        PdfLaunchAction launchAction = new PdfLaunchAction("C:/Example.pdf", PdfFilePathType.Absolute);

        // 最初のページに矩形と案内文を描画
        Rectangle2D rect = new Rectangle2D.Float(20, 30, 130, 20);
        pdf.getPages().get(0).getCanvas().drawRectangle(PdfBrushes.getLightGray(), rect);
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Gothic UI", Font.BOLD, 12), true);
        PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Center);
        pdf.getPages().get(0).getCanvas().drawString("ファイルを開くにはクリック", font, PdfBrushes.getBlack(), rect, format);

        // PdfLaunchActionオブジェクトを使用してPdfActionAnnotationオブジェクトを作成
        PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, launchAction);

        // 最初のページに注釈を追加
        pdf.getPages().get(0).getAnnotations().add(actionAnnotation);

        // ドキュメントを保存
        pdf.saveToFile("output/PDFファイル開くアクション.pdf");
        pdf.close();
    }
}

Java で PDF にファイル開くアクションを追加

Java で PDF にサウンド アクションを追加

PdfSoundAction クラスを使用して、PDF ドキュメント内で音声再生を処理できます。これにより、バックグラウンドミュージックや音声リマインダーなどの機能を実現できます。以下は、PDF ドキュメントに音声アクションを作成する Java コードの例です。

  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.actions.PdfSoundAction;
import com.spire.pdf.annotations.PdfActionAnnotation;
import com.spire.pdf.general.PdfSoundChannels;
import com.spire.pdf.general.PdfSoundEncoding;
import com.spire.pdf.graphics.PdfImage;

import java.awt.geom.Rectangle2D;

public class AddSoundActionPDF {
    public static void main(String[] args) {
        // PdfDocumentインスタンスを作成
        PdfDocument pdf = new PdfDocument();

        // PDFファイルを読み込む
        pdf.loadFromFile("Sample.pdf");

        // PdfSoundActionオブジェクトを作成し、音声プロパティを設定
        PdfSoundAction soundAction = new PdfSoundAction("Wave.wav");
        soundAction.setRepeat(false); // 繰り返し再生を無効化
        soundAction.getSound().setBits(16); // サウンドビット数を設定
        soundAction.getSound().setChannels(PdfSoundChannels.Stereo); // ステレオチャンネルを設定
        soundAction.getSound().setEncoding(PdfSoundEncoding.Signed); // サウンドエンコーディングを設定
        soundAction.getSound().setRate(44100); // サンプルレートを設定

        // 最初のページにサウンドロゴを描画
        PdfImage image = PdfImage.fromFile("Sound.jpg");
        pdf.getPages().get(0).getCanvas().drawImage(image, new Rectangle2D.Float(40, 40, image.getWidth(), image.getHeight()));

        // サウンドロゴの位置にPdfSoundActionオブジェクトを使用してPdfActionAnnotationオブジェクトを作成
        Rectangle2D rect = new Rectangle2D.Float(40, 40, image.getWidth(), image.getHeight());
        PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, soundAction);

        // 最初のページに注釈を追加
        pdf.getPages().get(0).getAnnotations().add(actionAnnotation);

        // ドキュメントを保存
        pdf.saveToFile("output/PDFサウンド・アクション.pdf");
        pdf.close();
    }
}

Java で PDF にサウンド アクションを追加

Java で PDF に JavaScript アクションを追加

PdfJavaScriptAction クラスを使用して、PDF ドキュメント内に JavaScript アクションを作成できます。この機能により、動的なフォームの作成、ユーザー入力の検証、タスクの自動化などのカスタムインタラクティブ機能が可能になります。以下は、PDF ドキュメントに JavaScript アクションを追加する Java コードの例です。

  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.actions.PdfJavaScriptAction;

public class AddJavaScriptActionPDF {
    public static void main(String[] args) {
        // PdfDocumentインスタンスを作成
        PdfDocument pdf = new PdfDocument();

        // PDFファイルを読み込む
        pdf.loadFromFile("Sample.pdf");

        // JavaScriptコードを定義し、それを使用してPdfJavaScriptActionインスタンスを作成
        String jsCode = """
                app.alert({
                    cMsg: '富士山に関する記事を読む準備ができましたか?\\n\\nこの記事では、富士山の概要、登山情報、周辺の観光スポット、そして日本の文化との深い関わりについて詳しく説明します。ぜひお楽しみください!',
                    nIcon: 3,
                    cTitle: 'ドキュメント紹介'
                })
                """;
        PdfJavaScriptAction javaScriptAction = new PdfJavaScriptAction(jsCode);

        // PDFファイルを開いた後に実行されるアクションとしてJavaScriptアクションを設定
        pdf.setAfterOpenAction(javaScriptAction);

        // ドキュメントを保存
        pdf.saveToFile("output/PDF JavaScriptアクション.pdf");
        pdf.close();
    }
}

Java で PDF に JavaScript アクションを追加

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

PDF ファイルのインタラクティブ性を高めることは、文書管理やユーザーエンゲージメントの重要な要素です。C# を使用して .NET フレームワーク内で PDF にアクションを追加することで、ファイルリンク、ウェブリンク、音声などの動的要素を組み込むことができます。これにより、ページ間の移動、外部アプリケーションの起動、背景音楽の再生などのさまざまな機能が実行可能になり、PDF の実用性や魅力が向上します。本記事では、Spire.PDF for .NET ライブラリを使用して C# で PDF ドキュメントにアクションを作成する方法を紹介します。

Spire.PDF for .NET をインストールします

まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.PDF

C# で PDF にアクションを追加する基本手順

C# を用いて PDF にアクションを追加するには、ナビゲーション ボタン、ファイル リンク、または音声トリガーなど、ユーザー体験を向上させるインタラクティブ要素を統合します。Spire.PDF for .NET ライブラリを使用すると、主要なクラスやメソッドを活用してさまざまなアクションを作成できます。以下は、Spire.PDF for .NET を使って PDF にアクションを追加する一般的な手順です:

  • PdfDocument クラスのインスタンスを作成し、PdfDocument.LoadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • PdfDocument.Pages[] プロパティを使用して対象のページを取得します。
  • アクションを表すクラスのインスタンスを作成し、そのプロパティを設定します。
  • アクションを使用してページ上の矩形領域に PdfActionAnnotation クラスのインスタンスを作成します。
  • 必要に応じて、アクションのキューとなるテキストをページに追加します(オプション)。
  • PdfPageBase.Annotations.Add() メソッドを使用してアクション注釈をページに追加します。
  • PdfDocument.SaveToFile() メソッドを使用して結果のドキュメントを保存します。

C# で PDF にナビゲーション アクションを作成

PdfGoToAction クラスを使用すると、ドキュメント内の指定した目的地へのナビゲーションを定義できます。このアクションを実現するには、PdfDestination オブジェクトを作成し、それを PdfGoToAction インスタンスに渡します。以下は、PDF にナビゲーションアクションを追加するコード例です:

  • C#
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Annotations;
using Spire.Pdf.General;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace AddNavigationButtonPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            // PdfDocumentのインスタンスを作成
            PdfDocument pdf = new PdfDocument();

            // PDFファイルを読み込む
            pdf.LoadFromFile("Sample.pdf");

            // PdfDestinationインスタンスを作成し、遷移先を設定
            PdfDestination destination = new PdfDestination(pdf.Pages[1]);
            destination.Location = new PointF(0, 0);
            destination.Mode = PdfDestinationMode.Location;
            destination.Zoom = 0.8f;

            // 遷移先に基づいてPdfGoToActionを作成
            PdfGoToAction action = new PdfGoToAction(destination);

            // 四角形を作成し、最初のページに描画
            RectangleF rect = new RectangleF(70, pdf.PageSettings.Size.Height - 120, 140, 20);
            pdf.Pages[0].Canvas.DrawRectangle(PdfBrushes.LightGray, rect);
            // 四角形にテキストを描画
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Gothic UI", 14f, FontStyle.Bold), true);
            PdfStringFormat stringFormat = new PdfStringFormat(PdfTextAlignment.Center);
            pdf.Pages[0].Canvas.DrawString("2ページに移動", font, PdfBrushes.Green, rect, stringFormat);

            // 四角形とアクションに基づいてPdfActionAnnotationインスタンスを作成
            PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, action);

            // 最初のページにアクション注釈を追加
            pdf.Pages[0].Annotations.Add(actionAnnotation);

            // ドキュメントを保存
            pdf.SaveToFile("output/ナビゲーション・アクション.pdf");
            pdf.Close();
        }
    }
}

C# で PDF にナビゲーション アクションを作成

C# で PDF にファイル開くアクションを作成

PdfLaunchAction クラスを使用すると、PDF 内に埋め込まれたボタンをクリックして特定のファイルを開くアクションを定義できます。このアクションを実装する際、ファイルのパス(絶対または相対)を設定し、新しいウィンドウで開くかどうかを指定できます。以下は、PDF ドキュメントにファイル開くアクションを追加するコード例です:

  • C#
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace AddFileLaunchActionPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            // PdfDocumentのインスタンスを作成
            PdfDocument pdf = new PdfDocument();

            // PDFファイルを読み込む
            pdf.LoadFromFile("Sample.pdf");

            // 最初のページを取得
            PdfPageBase page = pdf.Pages[0];

            // ページ上に四角形を描画
            RectangleF rect = new RectangleF(50, 50, 180, 20);
            page.Canvas.DrawRectangle(PdfBrushes.LightGray, rect);
            // 四角形内にテキストを描画
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Gothic UI", 14f, FontStyle.Bold), true);
            PdfStringFormat stringFormat = new PdfStringFormat(PdfTextAlignment.Center);
            pdf.Pages[0].Canvas.DrawString("クリックしてSample2を開く", font, PdfBrushes.Green, rect, stringFormat);

            // PdfLaunchActionインスタンスを作成
            PdfLaunchAction action = new PdfLaunchAction("C:/Sample2.pdf", PdfFilePathType.Absolute);
            // 新しいウィンドウで開くように起動モードを設定
            action.IsNewWindow = true;

            // 四角形と起動アクションに基づいてPdfActionAnnotationインスタンスを作成
            PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, action);

            // 最初のページにアクション注釈を追加
            page.Annotations.Add(actionAnnotation);

            // ドキュメントを保存
            pdf.SaveToFile("output/ファイル開くアクション.pdf");
            pdf.Close();
        }
    }
}

C# で PDF にファイル開くアクションを作成

C# で PDF にサウンド アクションを作成

PdfSoundAction クラスを使用すると、PDF ドキュメント内にオーディオをアクションとして埋め込むことができ、ファイルを開いたときやボタンをクリックしたときなど、特定のトリガーに応じて音声を再生できます。以下は、PDF ドキュメントにサウンド アクションを作成するコード例です:

  • C#
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;
using Spire.Pdf.General;
using System.Drawing;

namespace AddSoundActionPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            // PdfDocumentのインスタンスを作成
            PdfDocument pdf = new PdfDocument();

            // PDFファイルを読み込む
            pdf.LoadFromFile("Sample.pdf");

            // 最初のページを取得
            PdfPageBase page = pdf.Pages[0];

            // ページにキュー画像を描画
            PdfImage image = PdfImage.FromFile("Sound.png");
            page.Canvas.DrawImage(image, new PointF(30, 30));

            // PdfSoundActionインスタンスを作成し、そのプロパティを設定
            PdfSoundAction action = new PdfSoundAction("Wave.wav");
            // サウンドのパラメータを設定
            action.Sound.Bits = 16;
            action.Sound.Channels = PdfSoundChannels.Stereo;
            action.Sound.Encoding = PdfSoundEncoding.Signed;
            action.Sound.Rate = 44100;
            // 再生オプションを設定
            action.Volume = 0;
            action.Repeat = true;
            action.Mix = true;
            action.Synchronous = true;

            // キュー画像の位置に基づいてサウンドアクションのPdfActionAnnotationインスタンスを作成
            RectangleF rect = new RectangleF(30, 30, image.Width, image.Height);
            PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, action);

            // 最初のページにアクション注釈を追加
            page.Annotations.Add(actionAnnotation);

            // ドキュメントが開かれた後にサウンドアクションを再生するよう設定
            pdf.AfterOpenAction = action;

            // ドキュメントを保存
            pdf.SaveToFile("output/サウンドアクション.pdf");
            pdf.Close();
        }
    }
}

C# で PDF にサウンド アクションを作成

C# で PDF にウェブリンク アクションを作成

PdfUriAction クラスを使用すると、PDF ドキュメントにウェブリンクアクションを作成できます。これにより、ボタンをクリックした際などにウェブリンクを開くことが可能になります。以下は、ウェブリンクアクションを作成するコード例です:

  • C#
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Annotations;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace AddSoundActionPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            // PdfDocumentのインスタンスを作成
            PdfDocument pdf = new PdfDocument();

            // PDFファイルを読み込む
            pdf.LoadFromFile("Sample.pdf");

            // 最初のページを取得
            PdfPageBase page = pdf.Pages[0];

            // ページ上に四角形を描画
            RectangleF rect = new RectangleF(30, 30, 120, 20);
            page.Canvas.DrawRectangle(PdfBrushes.LightGray, rect);
            // 四角形内にテキストを描画
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Gothic UI", 14f, FontStyle.Bold), true);
            PdfStringFormat stringFormat = new PdfStringFormat(PdfTextAlignment.Center);
            page.Canvas.DrawString("クリックしてGoogle検索へ", font, PdfBrushes.LightSkyBlue, rect);

            // PdfUriActionインスタンスを作成し、そのプロパティを設定
            PdfUriAction action = new PdfUriAction();
            action.Uri = "https://www.google.com/";

            // Webリンクアクションと四角形を使用してPdfActionAnnotationインスタンスを作成
            PdfActionAnnotation actionAnnotation = new PdfActionAnnotation(rect, action);

            // 最初のページにアクション注釈を追加
            page.Annotations.Add(actionAnnotation);

            // ドキュメントを保存
            pdf.SaveToFile("output/ウェブリンク・アクション.pdf");
            pdf.Close();
        }
    }
}

C# で PDF にウェブリンク アクションを作成

C# で PDF に JavaScript アクションを作成

PdfJavaScriptAction は PDF 内で JavaScript アクションを表し、フォームのバリデーション、データ計算、カスタムユーザーインターフェースなどの複雑なインタラクションを実現することができます。以下は、C# を使用して PDF ドキュメントに簡単な JavaScript アクションを追加するコード例です:

  • C#
using Spire.Pdf;
using Spire.Pdf.Actions;

namespace AddJavaScriptActionPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            // PdfDocumentインスタンスを作成
            PdfDocument pdf = new PdfDocument();

            // PDFファイルを読み込む
            pdf.LoadFromFile("Sample.pdf");

            // JavaScriptコードを定義
            var jsCode =
            "app.alert({" +
            "    cMsg: 'グレートバリアリーフについての記事を読む準備ができましたか?\\n\\nこの記事では、オーストラリアのグレートバリアリーフの概要、その生態系、観光情報、および環境保護の取り組みについて詳しく説明します。ぜひお楽しみください!', " +
            "    nIcon: 3, " +
            "    cTitle: '文档介绍'" +
            "});";

            // JavaScriptコードを使用し、PdfJavaScriptActionインスタンスを作成
            PdfJavaScriptAction action = new PdfJavaScriptAction(jsCode);

            // 作成したJavaScriptアクションをドキュメントのオープン時に実行されるように設定
            pdf.AfterOpenAction = action;

            // ドキュメントを保存
            pdf.SaveToFile("output/PDFJavaScriptアクション.pdf");
            pdf.Close();
        }
    }
}

C# で PDF に JavaScript アクションを作成

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。