文字の透かしは、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>9.1.4</version>
</dependency>
</dependencies>
PDF 文書に単一の文字透かしを挿入する
単一の文字透かしは、PDF ページの中央に1回だけ表示される文字透かしです。Spire.PDF for Java を使用して PDF 文書に単一テキストの透かしを挿入する手順は、以下の通りです。
- PdfDocument クラスのインスタンスを生成します。
- PdfDocument.loadFromFile() メソッドを使用してPDF文書を読み込みます。
- ページをループして、透かしを挿入します。
- PdfDocument.getPages().get() メソッドを使用して、特定のページを取得します。
- PdfPageBase.getCanvas().setTransparency() メソッドを使用して透かしの透明度を設定します。
- PdfPageBase.getCanvas().translateTransform() メソッドを使用して、座標の移動量を設定します。
- PdfPageBase.getCanvas().rotateTransform() メソッドを使用して、透かしの回転角度を設定します。
- PdfPageBase.getCanvas().drawString() メソッドを使用して、ページ上に透かしを描画します。
- PdfDocument.saveToFile() メソッドを使用してファイルを保存します。
- Java
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
public class insertSingleTextWaterMark {
public static void main(String[] args) {
//PdfDocumentクラスのオブジェクトを作成する
PdfDocument pdf = new PdfDocument();
//PDFファイルを読み込む
pdf.loadFromFile("恐竜は物語である.pdf");
//ページをループして透かしを挿入する
String text = "サンプル";
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Mincho", Font.BOLD, 50));
float set1 = (float) (font.measureString(text).getWidth() * Math.sqrt(2)/4);
float set2 = (float) (font.measureString(text).getHeight() * Math.sqrt(2)/4);
for (int i = 0; i < pdf.getPages().getCount(); i++){
//ページを取得する
PdfPageBase page = pdf.getPages().get(i);
//透かし文字の透明度を設定する
page.getCanvas().setTransparency(0.8f);
//座標の移動量を設定する
page.getCanvas().translateTransform(page.getCanvas().getSize().getWidth()/2 - set1 - set2, page.getCanvas().getSize().getHeight()/2 + set1 - set2);
//透かし文字の回転角度を設定する
page.getCanvas().rotateTransform(-45);
//ページ上に透かしを描画する
page.getCanvas().drawString(text, font, PdfBrushes.getDarkGray(), 0, 0);
}
//ファイルを保存する
pdf.saveToFile("単一の文字透かし.pdf");
}
}
PDF 文書にタイル状の文字透かしを挿入する
タイル型透かしは、1ページに複数回表示される透かしです。これらは、文書の著作権や所有権を保護するために多く使用されています。私たちは、Spire.PDF for Java のクラスとメソッドに基づいてカスタムのメソッド insertTextWatermark() を作成し、PDF文書にタイル状の文字透かしを挿入することができます。詳細な手順は次のとおりです。
- PdfDocument クラスのインスタンスを生成します。
- PdfDocument.loadFromFile() メソッドを使用して PDF ファイルを読み込みます。
- 文書のページをループして透かしを挿入します。
- PdfDocument.getPages().get() メソッドを使用して、文書内のページを取得します。
- カスタムのメソッド insertTextWatermark() を使って透かし文字を挿入します。
- PdfDocument.saveToFile() メソッドを使用してファイルを保存します。
- Java
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
public class insertTiledTextWatermark {
public static void main(String[] args) {
//PdfDocumentクラスのオブジェクトを作成する
PdfDocument pdf = new PdfDocument();
//PDFファイルを読み込む
pdf.loadFromFile("恐竜は物語である.pdf");
//ページをループして透かしを挿入する
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Mincho", Font.BOLD, 20));
for (int i = 0; i < pdf.getPages().getCount(); i++){
PdfPageBase pageBase = pdf.getPages().get(i);
insertTextWatermark(pageBase, font, "部外秘", 3, 3);
}
//ファイルを保存する
pdf.saveToFile("タイル状の文字透かし.pdf");
}
static void insertTextWatermark(PdfPageBase page, PdfTrueTypeFont font, String watermark, int row, int column) {
//座標の移動を計算する際に使用する2つのオフセット変数の値を計算する
float set1 = (float)(font.measureString(watermark).getWidth() * Math.sqrt(2)/4);
float set2 = (float)(font.measureString(watermark).getHeight() * Math.sqrt(2)/4);
//タイリングブラシを作成する
PdfTilingBrush brush = new PdfTilingBrush(new Dimension((int) (page.getActualSize().getWidth()/column), (int) (page.getActualSize().getHeight()/row)));
brush.getGraphics().setTransparency(0.3f);
brush.getGraphics().save();
brush.getGraphics().translateTransform(brush.getSize().getWidth()/2 - set1 - set2, brush.getSize().getHeight()/2 + set1 - set2);
brush.getGraphics().rotateTransform(-45);
//タイリングブラシに透かしテキストを描画する
brush.getGraphics().drawString(watermark, font, PdfBrushes.getViolet(), 0, 0);
brush.getGraphics().restore();
//このタイリングブラシを使って透かしを描く
page.getCanvas().drawRectangle(brush, new Rectangle(new Point(0, 0), new Dimension((int)(page.getActualSize().getWidth()), (int)(page.getActualSize().getHeight()))));
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。