チュートリアル
簡単にライブラリーを使用するためのチュートリアルコレクション
Excel セルの表示形式(Number Format)は、スプレッドシートを扱う際に重要なステップです。特に、プロフェッショナルな場面やデータドリブンな環境では、適切な表示形式を設定することで、データを明確かつ一貫性のある形で提示でき、用途に応じた適切な形式で表示することが可能になります(例:財務データ、パーセンテージ、日付、科学的値など)。Java を使用して Excel のタスクを自動化する場合、適切な表示形式をプログラムで設定することで、時間を節約し、エラーを減らし、レポートやダッシュボードの可読性を向上させることができます。
本記事では、Spire.XLS for Java を使用して、Excel セルの表示形式を設定する方法を説明します。これにより、洗練された構造化スプレッドシートを簡単に作成することが可能になります。
まず、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>
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 セルの表示形式を設定する手順は以下の通りです:
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); // 数値フォーマットを適用
}
}
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 のセルに特定の数値形式でデータを追加する詳細な手順は次のとおりです:
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();
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するには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 を対象としたコンソールアプリを作成します。
2. アプリケーションのプラットフォームターゲットを x64 に変更する
アプリケーションのソリューションエクスプローラーでプロジェクト名を右クリックし、「プロパティ」を選択します。
プラットフォームターゲットを x64 に変更します。この手順は必須で、Spire.OCR が 64 ビットプラットフォームのみをサポートしているためです。
3. Spire.OCR for .NET をアプリケーションにインストールする
NuGet を使用して Spire.OCR for .NET をインストールします。以下のコマンドを NuGet パッケージマネージャーコンソールで実行してください。
Install-Package Spire.OCR
4. Spire.OCR for .NET の新しいモデルをダウンロードする
お使いのオペレーティングシステムに適したモデルを以下のリンクからダウンロードしてください。
次に、パッケージを解凍し、コンピューター上の特定のディレクトリに保存します。この例では、パッケージを "D:\" に保存しました。
5. C# で Spire.OCR for .NET を使用して画像からテキストを抽出する
以下のコード例は、C# を使用して Spire.OCR for .NET の新しいモデルで画像からテキストを抽出する方法を示しています。
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 パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.XLS
Spire.XLS for .NET を使うと、Workbook.LoadFromFile() メソッドで Excel ファイルをロードし、CellRange.Value プロパティを利用してセルデータを取得できます。その後、System.Data.SQLite モジュールなどを使用してデータベース操作を行い、データをデータベースに書き込むことが可能です。
以下の手順とコードでは、SQLite を例にして、C# を使って Excel データをデータベースにインポートする方法を示します。
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データベースに書き込まれました!");
}
}
}
SQLite データベースからデータを読み取り、Workbook オブジェクトを使用して新しい Excel ファイルを生成する方法を説明します。
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ファイルにエクスポートされました!");
}
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
PDF におけるデジタル署名の検証は、ドキュメントが改ざんされておらず、署名者の真正性が確認できることを保証するために非常に重要です。この検証プロセスは、ドキュメントの整合性や信頼性を維持する上で不可欠です。また、デジタル署名の抽出を行うことで、署名画像や証明書情報などの詳細を取得でき、さらなる検証やアーカイブ目的に活用できます。本記事では、Java で Spire.PDF for Java ライブラリを使用して、PDF 内のデジタル署名を検証および抽出する方法を説明します。
まず、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 for Java は、PdfSignature.verifySignature() メソッドを提供しており、PDF ドキュメント内のデジタル署名の有効性を確認できます。詳細な手順は以下の通りです。
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("署名は無効です!");
}
}
}
}
}
}
署名済みの PDF ドキュメントが改ざんされているかを確認するには、PdfSignature.VerifyDocModified() メソッドを使用します。詳細な手順は以下の通りです。
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("ドキュメントは変更されていません!");
}
}
}
}
}
}
PDF から署名画像および証明書情報を抽出するには、PdfFormWidget.extractSignatureAsImages() メソッドと PdfSignature.getCertificate().toString() メソッドを使用します。詳細な手順は以下の通りです。
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();
}
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
デジタル技術の急速な発展に伴い、多くの企業が情報を電子的に作成、保存、送信するようになっています。電子ドキュメントの信頼性と真正性を確保するために、デジタル署名が広く利用されています。本記事では、Spire.PDF for Java を使用して PDF に見えるデジタル署名または見えないデジタル署名を追加する方法、およびデジタル署名を削除する方法について解説します。
まず、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 for Java を使用して PDF に見えないデジタル署名を追加する手順です。
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();
}
}
以下は、Spire.PDF for Java を使用して PDF に見えるデジタル署名を追加する手順です。
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();
}
}
以下は、Spire.PDF for Java を使用して PDF からデジタル署名を削除する手順です。
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 を 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 for Java を使用して既存の PDF ドキュメントを操作する場合、座標系の原点はページの左上隅に位置していることに注意してください。X 軸は右方向に伸び、y 軸は下方向に伸びています。この座標系は以下の図で説明されています。
まず、PdfTextFinder.find() メソッドを使用して、ページ内の特定のテキストのすべての出現箇所を検索し、その結果を PdfTextFragment のリストとして取得します。その後、PdfTextFragment.getPositions() メソッドを使用して、指定したテキストの最初の出現箇所の座標を取得することができます。
以下は、PDF 内の特定のテキストの座標を取得する手順です:
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);
}
}
まず、PdfImageHelper.getImagesInfo() メソッドを使用して、指定したページ内のすべての画像情報を取得し、その結果を PdfImageInfo の配列として保存します。その後、PdfImageInfo.getBounds().getX() および PdfImageInfo.getBounds().getY() メソッドを使用して、特定の画像の X 座標および Y 座標を取得します。
以下は、PDF 内の特定の画像の座標を取得する手順です:
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);
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
OCR(光学文字認識)技術は、画像からテキストを抽出するための主要な方法です。Spire.OCR for Java は、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 プロジェクトを作成します。
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 をクリックしてプロジェクトの依存関係として追加します。
3. その他の依存ファイルをダウンロードして配置する
ご使用のオペレーティングシステムに適したモデルを以下のリンクからダウンロードしてください。
次に、パッケージを解凍し、コンピューターの特定のディレクトリに保存します。この例では、パッケージを「D:\」に保存しました。
以下は、Spire.OCR for 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 を 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 では、PdfPageBase.getCanvas().drawLine(PdfPen pen, float x1, float y1, float x2, float y2) メソッドを使用して、指定した位置に線を描画できます。また、PDF ペンのスタイルを変更することで、実線や点線などの異なる線を描画可能です。以下に詳細な手順を示します。
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();
}
}
指定した位置に弧や扇形を描画するには、PdfPageBase.getCanvas().drawArc() および PdfPageBase.getCanvas().drawPie() メソッドを使用します。以下はその詳細手順です。
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();
}
}
Spire.PDF for Java では、PdfPageBase.getCanvas().drawRectangle() メソッドを使用して PDF ページ上に長方形を描画できます。このメソッドに異なるパラメータを渡すことで、位置やサイズ、塗りつぶしの色を指定可能です。以下に詳細手順を示します。
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();
}
}
PdfPageBase.getCanvas().drawEllipse() メソッドを使用すると、PDF ページに楕円を描画できます。PDF ペンまたは塗りつぶし用ブラシを使用することで、異なるスタイルの楕円を描画可能です。以下に詳細手順を示します。
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();
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
PDF ドキュメントをインタラクティブな要素で強化することは、ユーザーエンゲージメントや機能性向上のためにますます重要になっています。ドキュメントページへのリンク、JavaScript の実行、またはファイルオープンをトリガーするようなアクションを PDF に追加することで、さまざまなプロフェッショナルおよび個人用途でのドキュメントの利便性を大幅に向上させることができます。Java で Spire.PDF for Java ライブラリを使用して、こうした動的な機能を組み込むことで、開発者は PDF ドキュメントに新たな可能性をもたらし、より多機能でユーザーフレンドリーなドキュメントを作成できます。
本記事では、Spire.PDF for Java を使用して PDF ドキュメントにアクションを追加する方法を紹介します。
まず、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 ドキュメントにナビゲーション アクション、ファイル開くアクション、音声アクション、JavaScript アクションなど、さまざまなアクションを追加できる機能を提供します。以下は、よく使用されるアクションに対応するクラスとその説明を示す一覧です。
クラス名 | 説明 |
PdfGoToAction | 現在のドキュメント内の特定の位置に移動するアクションを表します。 |
PdfLaunchAction | ファイルを起動して開くアクションを表します。 |
PdfJavaScriptAction | JavaScript コードを実行するアクションを表します。 |
PdfSoundAction | 音声を再生するアクションを表します。 |
その他のアクションクラスとその詳細については、Spire.PDF for Java アクション API リファレンスをご参照ください。
PDF ドキュメントにアクションを追加する方法は主に次の 2 つです。
1. アクション注釈を使用する方法
この方法では、アクションを作成し、ページ上の注釈にリンクさせます。注釈がクリックされるとアクションが表示および実行されます。
手順:
2. ドキュメントイベントにアクションを割り当てる方法
アクションは、ドキュメントの開閉や印刷などのイベントに割り当てることもできます。これらのアクションは、指定されたイベントが発生したときに自動的に実行されます。
手順:
PdfGoToAction クラスを使用して、PDF ドキュメント内の特定の位置にジャンプするナビゲーションアクションを作成できます。以下は、PDF ドキュメントにナビゲーションボタンを作成する 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();
}
}
開発者は、PdfLaunchAction クラスを使用して、PDF ドキュメントにファイル開くアクションを作成できます。以下に、PDF ドキュメントにファイルオープンアクションを追加する 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();
}
}
PdfSoundAction クラスを使用して、PDF ドキュメント内で音声再生を処理できます。これにより、バックグラウンドミュージックや音声リマインダーなどの機能を実現できます。以下は、PDF ドキュメントに音声アクションを作成する 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();
}
}
PdfJavaScriptAction クラスを使用して、PDF ドキュメント内に JavaScript アクションを作成できます。この機能により、動的なフォームの作成、ユーザー入力の検証、タスクの自動化などのカスタムインタラクティブ機能が可能になります。以下は、PDF ドキュメントに JavaScript アクションを追加する 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();
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
PDF ファイルのインタラクティブ性を高めることは、文書管理やユーザーエンゲージメントの重要な要素です。C# を使用して .NET フレームワーク内で PDF にアクションを追加することで、ファイルリンク、ウェブリンク、音声などの動的要素を組み込むことができます。これにより、ページ間の移動、外部アプリケーションの起動、背景音楽の再生などのさまざまな機能が実行可能になり、PDF の実用性や魅力が向上します。本記事では、Spire.PDF for .NET ライブラリを使用して C# で PDF ドキュメントにアクションを作成する方法を紹介します。
まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.PDF
C# を用いて PDF にアクションを追加するには、ナビゲーション ボタン、ファイル リンク、または音声トリガーなど、ユーザー体験を向上させるインタラクティブ要素を統合します。Spire.PDF for .NET ライブラリを使用すると、主要なクラスやメソッドを活用してさまざまなアクションを作成できます。以下は、Spire.PDF for .NET を使って PDF にアクションを追加する一般的な手順です:
PdfGoToAction クラスを使用すると、ドキュメント内の指定した目的地へのナビゲーションを定義できます。このアクションを実現するには、PdfDestination オブジェクトを作成し、それを PdfGoToAction インスタンスに渡します。以下は、PDF にナビゲーションアクションを追加するコード例です:
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();
}
}
}
PdfLaunchAction クラスを使用すると、PDF 内に埋め込まれたボタンをクリックして特定のファイルを開くアクションを定義できます。このアクションを実装する際、ファイルのパス(絶対または相対)を設定し、新しいウィンドウで開くかどうかを指定できます。以下は、PDF ドキュメントにファイル開くアクションを追加するコード例です:
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();
}
}
}
PdfSoundAction クラスを使用すると、PDF ドキュメント内にオーディオをアクションとして埋め込むことができ、ファイルを開いたときやボタンをクリックしたときなど、特定のトリガーに応じて音声を再生できます。以下は、PDF ドキュメントにサウンド アクションを作成するコード例です:
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();
}
}
}
PdfUriAction クラスを使用すると、PDF ドキュメントにウェブリンクアクションを作成できます。これにより、ボタンをクリックした際などにウェブリンクを開くことが可能になります。以下は、ウェブリンクアクションを作成するコード例です:
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();
}
}
}
PdfJavaScriptAction は PDF 内で JavaScript アクションを表し、フォームのバリデーション、データ計算、カスタムユーザーインターフェースなどの複雑なインタラクションを実現することができます。以下は、C# を使用して PDF ドキュメントに簡単な JavaScript アクションを追加するコード例です:
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();
}
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。