PDF の画像の透かしは、ページに埋め込まれた固定ページ要素として 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 ページの中央に挿入されます。 以下は、PDF 文書に単一の画像透かしを挿入するための詳細な手順です。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
- PdfImage.fromFile() メソッドを使用して、画像を読み込みます。
- PdfImage.getWidth() および PdfImage.getHeight() メソッドを使用して、画像の幅と高さを取得します。透かしを挿入するための初期座標を算出するために使用します。
- PDF 文書のページをループして透かしを挿入します。
- PdfDocument.getPages().get() メソッドを使用して、指定したページを取得します。
- PdfPageBase.getActualSize().getWidth() と PdfPageBase.getActualSize().getHeight() メソッドを使用して、ページの幅と高さを取得します。透かしを挿入するための初期座標を算出するために使用します。
- PdfPageBase.getCanvas().setTransparency() メソッドを使用して、透かし画像の透明度を設定します。
- PdfPageBase.getCanvas().drawImage() メソッドを使用して、ページの中央に透かし画像を描画します。
- PdfDocument.saveToFile() メソッドで文書を保存します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;
public class insertSingleImageWatermark {
public static void main(String[] args) {
//PdfDocumentクラスのオブジェクトを作成する
PdfDocument pdf = new PdfDocument();
//PDFファイルを読み込む
pdf.loadFromFile("恐竜は物語である.pdf");
//画像を読み込む
PdfImage image = PdfImage.fromFile("ロゴ.png");
//画像の幅と高さを取得する 透かしを挿入するための初期座標を算出するために使用される
int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
//全ページをループして透かしを挿入する
for (int i = 0; i < pdf.getPages().getCount(); i++) {
//ページを取得する
PdfPageBase page = pdf.getPages().get(i);
//ページの幅と高さを取得する 透かしを挿入するための初期座標を計算するために使用する
float pageWidth = (float) (page.getActualSize().getWidth());
float pageHeight = (float) (page.getActualSize().getHeight());
//透かし画像の透明度を設定する
page.getCanvas().setTransparency(0.3f);
//ページの中央に透かし画像を描画する
page.getCanvas().drawImage(image, pageWidth/2 - imageWidth/2, pageHeight/2 - imageHeight/2, imageWidth, imageHeight);
}
//文書を保存する
pdf.saveToFile("単一の画像の透かし.pdf");
}
}
PDF 文書にタイル状の画像の透かしを挿入する
タイル状の画像透かしは、同じ PDF のページ上に同じ透かし画像を複数回繰り返し表示する透かしです。 タイル型画像透かしの挿入では、透かし画像の繰り返し回数をカスタマイズすることができます。PDF 文書にタイル状の画像透かしを挿入する 操作手順の詳細は、以下のとおりです。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
- PdfImage.fromFile() メソッドを使用して、画像を読み込みます。
- ページをループして透かしを挿入します。
- PdfDocument.getPages().get() メソッドを使用して、指定されたページを取得します。
- カスタムメソッド insertImageWatermark() を使用して、タイル状の画像透かしを挿入します。
- PdfDocument.saveToFile() メソッドを使用して文書を保存します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfBrush;
import com.spire.pdf.graphics.PdfImage;
import com.spire.pdf.graphics.PdfTilingBrush;
import java.awt.*;
public class insertTiledImageWatermark {
public static void main(String[] args) {
//PdfDocumentクラスのオブジェクトを作成する
PdfDocument pdf = new PdfDocument();
//PDFファイルを読み込む
pdf.loadFromFile("恐竜は物語である.pdf");
//画像を読み込む
PdfImage image = PdfImage.fromFile("ロゴ.png");
//文書のページをループして透かしを挿入する
for (int i = 0; i < pdf.getPages().getCount(); i++ ) {
//ページを取得する
PdfPageBase page = pdf.getPages().get(i);
//カスタムメソッドを使用し、タイル状の画像透かしを挿入する
insertImageWatermark(page, image, 3, 3);
}
//文書を保存する
pdf.saveToFile("タイル状の画像の透かし.pdf");
}
static void insertImageWatermark(PdfPageBase page, PdfImage image, int row, int column) {
//タイル型ブラシを作成する
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 - image.getWidth()/2, brush.getSize().getHeight()/2 - image.getHeight()/2);
//ブラシで画像を描く
brush.getGraphics().drawImage(image, 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 日間有効な一時ライセンスを取得してください。