MS Word とは異なり、PDF は自動的にページの内容を再配置しないので、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>8.8.3</version>
</dependency>
</dependencies>
PDF ドキュメント内のテキストを検索して置換する
以下は、特定の PDF ページで選択されたテキストを検索し、新しいテキストでそれらを覆うための手順です。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
- PdfDocument.getPages().get() メソッドを使用して最初のページを取得し、PdfPageBase.findText() メソッドを使用してそのページから選択テキストを検索します。
- 検索されたテキストの境界を取得し、PdfPageBase.getCanvas().drawRectangle() メソッドを使用して境界の領域を覆うように白い長方形を描画します。
- PdfPageBase.getCanvas().drawString() メソッドを用いて、その領域に新しいテキストを描画します。
- PdfDocument.saveToFile() メソッドを使用して、ドキュメントを保存します。
- Java
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 日間有効な一時ライセンスを取得してください。