Word 文書には画像が含まれていることが多く、これらは文書の美観を高めるのに便利な要素です。文書全体のデザインが変わると、既存の画像が新しいスタイルに合わなくなることがあります。更新された画像に置き換えることで、一貫した外観を維持することができます。この記事では、Spire.Doc for Java を使用して、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>12.5.1</version>
</dependency>
</dependencies>
Word 文書内の画像を新しい画像に置き換える
Word ドキュメント内の画像を別の画像に置き換えるには、ドキュメントの要素をループして画像を見つけ、リストに追加します。そして、リストから置き換えたい画像を取得し、DocPicture.loadImage() メソッドを呼び出して、読み込んだ画像に置き換えます。以下はその詳細な手順です。
- Document のインスタンスを作成します。
- Document.loadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
- ArrayList のインスタンスを作成します。
- ドキュメント内のすべてのセクションを繰り返し処理します。
- 各セクション内のすべての段落を繰り返し処理します。
- 各段落内のすべての子オブジェクトを繰り返し処理します。
- 画像を見つけてリストに追加します。
- リストから特定の画像を取得し、DocPicture.loadImage() メソッドを使用して別の画像に置き換えます。
- Document.saveToFile() メソッドを使用して、結果のドキュメントを保存します。
- Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import java.util.ArrayList;
public class ReplaceImagesWord {
public static void main(String[] args) {
// Documentのインスタンスを作成します
Document doc = new Document();
// Word文書をロードします
doc.loadFromFile("サンプル.docx");
// ArrayListのインスタンスを作成します
ArrayList<DocumentObject> pictures = new ArrayList();
// ドキュメント内のすべてのセクションを反復処理します
for (Section sec : (Iterable<Section>) doc.getSections()
) {
// 各セクションのすべての段落を反復処理します
for (Paragraph para : (Iterable<Paragraph>) sec.getParagraphs()
) {
// 各段落のすべての子オブジェクトを反復処理します
for (DocumentObject obj : (Iterable<DocumentObject>) para.getChildObjects()
) {
// 画像を検索してリストに追加します
if (obj.getDocumentObjectType() == DocumentObjectType.Picture) {
pictures.add(obj);
}
}
}
}
// リスト内の最初の画像を新しい画像で置き換えます
DocPicture picture = (DocPicture)pictures.get(0);
picture.loadImage("image.jpg");
// 結果の文書を保存します
doc.saveToFile("output/新しい画像で置換.docx", FileFormat.Docx);
doc.dispose();
}
}
Word 文書内の画像をテキストに置き換える
Spire.Doc for Java は、画像をテキストに置き換える直接的な方法を提供していませんが、画像の位置にテキストを挿入し、文書から画像を削除することでこのタスクを実現できます。
以下の手順では、Word ドキュメント内のすべての画像をテキストに置き換える方法を示します。
- Document のインスタンスを作成します。
- Document.loadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
- ArrayList のインスタンスを作成します。
- ドキュメント内のすべてのセクションを繰り返し処理します。
- 各セクション内のすべての段落を繰り返し処理します。
- 各段落内のすべての子オブジェクトを繰り返し処理します。
- 画像を見つけてリストに追加します。
- リスト内の画像を繰り返し処理します。
- Paragraph.getChildObjects().indexOf() メソッドを使用して、段落内の画像のインデックスを取得します。
- TextRange のインスタンスを作成し、TextRange.setText() メソッドを使用してテキスト範囲のテキストを設定します。
- Paragraph.getChildObjects().insert() メソッドを使用して、画像の位置にテキスト範囲を挿入します。
- Paragraph.getChildObjects().remove() メソッドを使用して、段落から画像を削除します。
- Document.saveToFile() メソッドを使用して結果ドキュメントを保存します。
- Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import java.awt.*;
import java.util.ArrayList;
public class replaceImageWithTextWord {
public static void main(String[] args) {
// Documentのインスタンスを作成します
Document doc = new Document();
// Word文書をロードします
doc.loadFromFile("サンプル.docx");
// ArrayListのインスタンスを作成します
ArrayList<DocumentObject> pictures = new ArrayList();
int j = 1;
// ドキュメント内のすべてのセクションを反復処理します
for (Section sec : (Iterable<Section>) doc.getSections()) {
// 各セクションのすべての段落を反復処理します
for (Paragraph para : (Iterable<Paragraph>) sec.getParagraphs()) {
// 各段落のすべての子オブジェクトを反復処理します
for (DocumentObject obj : (Iterable<DocumentObject>) para.getChildObjects()) {
// 画像を検索してリストに追加します
if (obj.getDocumentObjectType() == DocumentObjectType.Picture) {
pictures.add(obj);
}
}
// リスト内のすべての画像をテキスト「Here was image {image index}」で置き換えます
for (DocumentObject pic : pictures) {
int index = para.getChildObjects().indexOf(pic);
// 範囲外のインデックスを確認して修正
if (index >= 0 && index < para.getChildObjects().getCount()) {
TextRange range = new TextRange(doc);
range.setText(String.format("Lavender", j));
range.getCharacterFormat().setFontSize(28f);
range.getCharacterFormat().setTextColor(Color.ORANGE);
para.getChildObjects().insert(index, range);
para.getChildObjects().remove(pic);
j++;
}
}
}
}
// 結果の文書を保存します
doc.saveToFile("output/画像をテキストに置換.docx", FileFormat.Docx);
doc.dispose();
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。