繰り返し透かしは、複数行の透かしとも呼ばれ、Word ドキュメントのページ上に一定の間隔で複数回表示される透かしの一種です。通常の透かしに比べ、繰り返し透かしは削除や隠蔽が難しいため、不正コピーや不正配布の防止に効果的です。この記事では、Spire.Doc for Java を使用して、プログラムによって Word ドキュメントに繰り返しテキストと画像の透かしを挿入する方法を紹介します。
Spire.Doc for Java をインストールします
まず、Spire. Doc 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.doc</artifactId>
<version>11.6.0</version>
</dependency>
</dependencies>
Word ドキュメントに繰り返しテキスト透かしを追加する
Word ドキュメントのヘッダーに指定した間隔で繰り返しワードアートを追加することで、Word ドキュメントに繰り返しテキスト透かしを挿入することができます。詳しい手順は次のとおりです。
- Document クラスのオブジェクトを作成します。
- Document.loadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
- ShapeObject クラスのオブジェクトを作成し、ShapeObject.getWordArt().setText() メソッドを使用してワードアートのテキストを設定します。
- 回転角度と垂直方向の繰り返し回数、水平方向の繰り返し回数を指定し ます。
- ShapeObject クラスのメソッドを使用して、図形の書式を設定します。
- Paragraph.getChildObjects().add(ShapeObject) メソッドを使用して、各セクションのヘッダーにワードアート図形を指定された間隔で複数回追加することにより、各セクションに繰り返し透かしを挿入するために、ドキュメント内のセクションをループします。
- Document.saveToFile() メソッドを使用してドキュメントを保存します。
- Java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.HeaderFooter;
import com.spire.doc.Section;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.ShapeLineStyle;
import com.spire.doc.documents.ShapeType;
import com.spire.doc.fields.ShapeObject;
import java.awt.*;
public class insertRepeatingTextWatermark {
public static void main(String[] args) {
//Documentクラスのオブジェクトを作成する
Document doc = new Document();
//Wordドキュメントを読み込む
doc.loadFromFile("サンプル.docx");
//ShapeObjectクラスのオブジェクトを作成し、アートフォントのテキストを設定する
ShapeObject shape = new ShapeObject(doc, ShapeType.Text_Plain_Text);
shape.getWordArt().setText("オリジナル");
//テキスト透かしの回転角度と、垂直方向と水平方向の繰り返し回数を設定する
double rotation = 315;
int ver = 5;
int hor = 3;
//ワードアートの書式を設定する
shape.setWidth(60);
shape.setHeight(20);
shape.setVerticalPosition(30);
shape.setHorizontalPosition(20);
shape.setRotation(rotation);
shape.getWordArt().setFontFamily("HarmonyOS Sans SC");
shape.setFillColor(Color.BLUE);
shape.setLineStyle(ShapeLineStyle.Single);
shape.setStrokeColor(Color.CYAN);
shape.setStrokeWeight(1);
//ドキュメントのセクションをループする
for (Section section : (Iterable extends Section>) doc.getSections()
) {
//セクションのヘッダーを取得する
HeaderFooter header = section.getHeadersFooters().getHeader();
//ヘッダーに段落を追加する
Paragraph paragraph = header.addParagraph();
for (int i = 0; i < ver; i++) {
for (int j = 0; j < hor; j++) {
//ヘッダーに段落を追加する
shape = (ShapeObject) shape.deepClone();
shape.setVerticalPosition((float) (section.getPageSetup().getPageSize().getHeight()/ver * i + Math.sin(rotation) * shape.getWidth()/2));
shape.setHorizontalPosition((float) ((section.getPageSetup().getPageSize().getWidth()/hor - shape.getWidth()/2) * j));
paragraph.getChildObjects().add(shape);
}
}
}
//ドキュメントを保存する
doc.saveToFile("繰り返しテキスト透かし.docx", FileFormat.Auto);
doc.dispose();
}
}
Word ドキュメントに繰り返し画像透かしを追加する
同様に、ヘッダーに一定の間隔で繰り返し画像を追加することで、Wordドキュメントに繰り返し画像透かしを挿入することができます。詳しい手順は次のとおりです。
- Document クラスのオブジェクトを作成します。
- Document.loadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
- DocPicture.loadImage() メソッドを使用して画像を読み込みます。
- DocPicture.setTextWrappingStyle(TextWrappingStyle.Behind) メソッドを使用して、画像の文字列の折り返しスタイルを背面に設定します。
- 垂直方向の繰り返し回数と水平方向の繰り返し回数を指定します。
- Paragraph.getChildObjects().add(DocPicture) メソッドを使用して、各セクションのヘッダーに画像を指定された間隔で複数回追加することにより、各セクションに繰り返し透かしを挿入するために、ドキュメント内のセクションをループします。
- Document.saveToFile() メソッドを使用してドキュメントを保存します。
- Java
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.HeaderFooter;
import com.spire.doc.Section;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextWrappingStyle;
import com.spire.doc.fields.DocPicture;
public class insertRepeatingPictureWatermark {
public static void main(String[] args) {
//Documentクラスのオブジェクトを作成する
Document doc = new Document();
//Wordドキュメントを読み込む
doc.loadFromFile("サンプル.docx");
//画像を読み込む
DocPicture pic = new DocPicture(doc);
pic.loadImage("透かし.png");
//画像のテキストの折り返しを背面に設定する
pic.setTextWrappingStyle(TextWrappingStyle.Behind);
//垂直方向と水平方向の繰り返し回数を設定する
int ver = 4;
int hor = 3;
//ドキュメントのセクションをループする
for (Section section : (Iterable extends Section>) doc.getSections()
) {
//セクションのヘッダーを取得する
HeaderFooter header = section.getHeadersFooters().getHeader();
//ヘッダーに段落を追加する
Paragraph paragraph = header.addParagraph();
for (int i = 0; i < ver; i++) {
for (int j = 0; j < hor; j++) {
//ヘッダーに画像を追加する
pic = (DocPicture) pic.deepClone();
pic.setVerticalPosition((float) ((section.getPageSetup().getPageSize().getHeight()/ver) * i));
pic.setHorizontalPosition((float) (section.getPageSetup().getPageSize().getWidth()/hor - pic.getWidth()/2) * j);
paragraph.getChildObjects().add(pic);
}
}
}
//ドキュメントを保存する
doc.saveToFile("繰り返し画像透かし.docx", FileFormat.Auto);
doc.dispose();
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。