チュートリアル
簡単にライブラリーを使用するためのチュートリアルコレクション
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 日間有効な一時ライセンスを取得してください。
PDF 文書内のテキストを検索して強調表示することは、多くの個人や組織にとって非常に重要な作業です。研究を行う学生であれ、契約書をレビューする専門家であれ、デジタル記録を整理するアーキビストであれ、特定の情報を素早く見つけて強調する能力は非常に貴重です。
この記事では、Spire.PDF for Java ライブラリを使用して、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.4.4</version>
</dependency>
</dependencies>
Spire.PDF for Java では、PdfTextFinder クラスを使用してページ内の特定のテキストを検索することができます。検索操作を実行する前に、PdfTextFinder.getOptions.setTextFindParameter() メソッドを使用して、WholeWord や IgnoreCase などの検索オプションを設定できます。テキストが見つかったら、ハイライトを適用してテキストを視覚的に区別することができます。
以下は、Java を使用して PDF 内の特定のページでテキストを検索し、強調表示する手順です。
import com.spire.ms.System.Collections.Generic.List;
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextFinder;
import com.spire.pdf.texts.PdfTextFragment;
import com.spire.pdf.texts.TextFindParameter;
import java.awt.*;
import java.util.EnumSet;
public class FindAndHighlightTextInPage {
public static void main(String[] args) {
// PdfDocumentオブジェクトを作成する
PdfDocument doc = new PdfDocument();
// PDFファイルを読み込む
doc.loadFromFile("サンプル.pdf");
// 特定のページを取得する
PdfPageBase page = doc.getPages().get(0);
// ページに基づいてPdfTextFinderオブジェクトを作成する
PdfTextFinder finder = new PdfTextFinder(page);
// 検索オプションを指定する
finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.WholeWord));
finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.IgnoreCase));
// 指定したテキストのインスタンスを検索する
List results = finder.find("クラウドサーバー");
// 検索結果を反復処理する
for (int i = 0; i < results.size(); i++)
{
// Get a finding result
PdfTextFragment fragment = (PdfTextFragment)results.get(i);
// Highlight the text
fragment.highLight();
}
// 別のPDFファイルに保存する
doc.saveToFile("output/PDFページ内のテキストをハイライト.pdf", FileFormat.PDF);
doc.dispose();
}
}
ドキュメント内の特定のセクションや情報に注目させるために、ユーザはページ内の矩形領域内で指定されたテキストを見つけて強調表示することができます。こ の矩形領域は、PdfTextFinder.getOptions().setFindArea() メソッドを用いて定義することができます。
以下は、Java を使用して PDF ページの矩形領域内のテキストを検索して強調表示する手順です。
import com.spire.ms.System.Collections.Generic.List;
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextFinder;
import com.spire.pdf.texts.PdfTextFragment;
import com.spire.pdf.texts.TextFindParameter;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.util.EnumSet;
public class FindAndHighlightTextInRectangle {
public static void main(String[] args) {
// PdfDocumentオブジェクトを作成します
PdfDocument doc = new PdfDocument();
// PDFファイルをロードします
doc.loadFromFile("サンプル.pdf");
// 特定のページを取得します
PdfPageBase page = doc.getPages().get(0);
// ページに基づいてPdfTextFinderオブジェクトを作成します
PdfTextFinder finder = new PdfTextFinder(page);
// テキストを検索するための長方形の領域を指定します
finder.getOptions().setFindArea(new Rectangle2D.Float(0,0,841,180));
// その他のオプションを指定します
finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.WholeWord));
finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.IgnoreCase));
// 指定したテキストのインスタンスを長方形の領域内で検索します
List results = finder.find("クラウドサーバー");
// 検索結果を反復処理します
for (int i = 0; i < results.size(); i++) {
// テキストのインスタンスを取得します
PdfTextFragment fragment = (PdfTextFragment)results.get(i);
// テキストをハイライト表示します
fragment.highLight(Color.lightGray);
}
// 別のPDFファイルに保存します
doc.saveToFile("output/矩形領域内のPDFテキストをハイライト.pdf", FileFormat.PDF);
// リソースを解放します
doc.dispose();
}
}
最初のコード例では、特定のページのテキストを強調表示する方法を示します。文書全体のテキストを強調表示するには、文書の各ページを走査して検索操作を実行し、特定されたテキストに強調表示を適用します。
Java を使って PDF 文書全体のテキストを検索し、強調表示する手順は以下のとおりです。
import com.spire.ms.System.Collections.Generic.List;
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextFinder;
import com.spire.pdf.texts.PdfTextFragment;
import com.spire.pdf.texts.TextFindParameter;
import java.awt.*;
import java.util.EnumSet;
public class FindAndHighlightTextInDocument {
public static void main(String[] args) {
// PdfDocumentオブジェクトを作成します
PdfDocument doc = new PdfDocument();
// PDFファイルをロードします
doc.loadFromFile("サンプル.pdf");
// PDFファイル内のページを反復処理します
for (Object pageObj : doc.getPages()) {
// 特定のページを取得します
PdfPageBase page = (PdfPageBase) pageObj;
// ページに基づいてPdfTextFinderオブジェクトを作成します
PdfTextFinder finder = new PdfTextFinder(page);
// 検索オプションを指定します
finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.WholeWord));
finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.IgnoreCase));
// 指定したテキストのインスタンスを検索します
List results = finder.find("クラウドサーバー");
// 検索結果を反復処理します
for (int i = 0; i < results.size(); i++) {
// テキストのインスタンスを取得します
PdfTextFragment fragment = (PdfTextFragment) results.get(i);
// テキストのインスタンスを強調表示します
fragment.highLight(Color.cyan);
}
}
// 別のPDFファイルに保存します
doc.saveToFile("output/PDF文書のテキストをハイライト.pdf", FileFormat.PDF);
// リソースを解放します
doc.dispose();
}
}
ドキュメント内の特定のテキストを探す場合、正規表現を使用すると検索条件の柔軟性と制御性が向上します。正規表現を利用するには、TextFindParameter を Regex として設定 し 、find() メソッドへの入力として希望の正規表現パターンを与える必要があります。
以下は、Java を使用して正規表現を使って PDF 内のテキストを検索し、強調表示する手順です。
import com.spire.ms.System.Collections.Generic.List;
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextFinder;
import com.spire.pdf.texts.PdfTextFragment;
import com.spire.pdf.texts.TextFindParameter;
import java.awt.*;
import java.util.EnumSet;
public class FindAndHighlightTextUsingRegex {
public static void main(String[] args) {
// PdfDocumentオブジェクトを作成します
PdfDocument doc = new PdfDocument();
// PDFファイルをロードします
doc.loadFromFile("サンプル.pdf");
// PDFファイル内のページを反復処理します
for (Object pageObj : doc.getPages()) {
// 特定のページを取得します
PdfPageBase page = (PdfPageBase) pageObj;
// ページに基づいてPdfTextFinderオブジェクトを作成します
PdfTextFinder finder = new PdfTextFinder(page);
// 検索モデルを正規表現に指定します
finder.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.Regex));
// 連続する3つの大文字にマッチする正規表現を指定します
String pattern = "[A-Z]{3}";
// 正規表現に一致するテキストを検索します
List results = finder.find(pattern);
// 検索結果を反復処理します
for (int i = 0; i < results.size(); i++) {
// テキストを取得します
PdfTextFragment fragment = (PdfTextFragment) results.get(i);
// テキストをハイライト表示します
fragment.highLight(Color.PINK);
}
}
// 別のPDFファイルに保存します
doc.saveToFile("output/正規表現でPDFテキストをハイライト.pdf", FileFormat.PDF);
// リソースを解放します
doc.dispose();
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
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>8.8.3</version>
</dependency>
</dependencies>
Spire.PDF for Java は、テキストのブラシ色を設定するために PdfSolidBrush クラスを提供します。それは、特定の RGB の色スペースまたは HTML の色コードに基づいてブラシの色を定義する機能を備えています。
以下は、PDF ドキュメントに文字色を設定する詳細な手順です。
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfRGBColor;
import com.spire.pdf.graphics.PdfSolidBrush;
import com.spire.pdf.graphics.PdfTrueTypeFont;
import java.awt.*;
public class setPDFFontColor {
public static void main(String[] args) throws Exception {
//PdfDocument クラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//ページを追加する
PdfPageBase page = doc.getPages().add();
//位置を設定する
float y = 30;
//ソリッドブラシのオブジェクトを作成し、色を定義する
PdfRGBColor rgb1 = new PdfRGBColor(Color.green);
PdfSolidBrush brush1 = new PdfSolidBrush(rgb1);
//RGB色
PdfRGBColor rgb2 = new PdfRGBColor(0,197,205);
PdfSolidBrush brush2 = new PdfSolidBrush(rgb2);
//HTMLコード色
Color color = Color.decode("#A52A2A");
PdfSolidBrush brush3 = new PdfSolidBrush(new PdfRGBColor(color));
//トゥルータイプのフォントのオブジェクトを作成する
Font font = new Font("Yu Mincho", java.awt.Font.BOLD, 14);
PdfTrueTypeFont trueTypeFont = new PdfTrueTypeFont(font);
//テキストを描画する
page.getCanvas().drawString("ブラシで文字色を設定します。", trueTypeFont, brush1, 0, (y = y + 30f));
page.getCanvas().drawString("RGBで文字色を設定します。", trueTypeFont, brush2, 0, (y = y + 50f));
page.getCanvas().drawString("HTMLコード色で文字色を設定します。", trueTypeFont, brush3, 0, (y = y + 60f));
//ドキュメントを保存する
doc.saveToFile("文字色の設定.pdf");
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
MS Word とは異なり、PDF は自動的にページの内容を再配置しないので、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>8.8.3</version>
</dependency>
</dependencies>
以下は、特定の PDF ページで選択されたテキストを検索し、新しいテキストでそれらを覆うための手順です。
import com.spire.pdf.*;
import com.spire.pdf.general.find.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.Rectangle2D;
public class replaceText {
public static void main(String[] args) throws Exception {
//PdfDocument クラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//PDFドキュメントを読み込む
doc.loadFromFile("C:/例.pdf");
//ドキュメントの最初のページを取得する
PdfPageBase page = doc.getPages().get(0);
//検索テキスト「精神医学者」
PdfTextFindCollection collection = page.findText("精神医学者",false);
//置換テキスト「心理療法士」を指定する
String newText = "心理療法士";
PdfBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.blue));
//PdfTrueTypeFontクラスのオブジェクトを作成し、フォントを設定する
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Mincho", Font.BOLD, 12));
for (Object findObj : collection.getFinds()) {
PdfTextFind find=(PdfTextFind)findObj;
//ページ上のテキストの境界を取得する
Rectangle2D.Float rec = (Rectangle2D.Float)find.getBounds();
page.getCanvas().drawRectangle(PdfBrushes.getWhite(), rec);
//テキストを描画する
page.getCanvas().drawString(newText, font, brush, rec.getX(), rec.getY()-7);
}
String result = "テキストの置換.pdf";
//ドキュメントを保存する
doc.saveToFile(result, FileFormat.PDF);
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。