取り消し線の書式は、生成された文書内で削除、改訂、または完了したタスクを示すためにしばしば必要です。 Conholdate.Total for Java は、Word 文書をプログラムで操作できる強力な SDK を提供します。このガイドでは、Java で取り消し線テキストを追加する方法を学び、構成オプションを検討し、パフォーマンスのベストプラクティスを確認し、独自のプロジェクトに適応できる完全なサンプルを実行します。

開始する前に: 前提条件とインストール

このチュートリアルを実行するには、次のものが必要です:

  • Java 17 またはそれ以降が開発マシンにインストールされていること。
  • 依存関係管理のための Maven 3.6+。
  • IntelliJ IDEA や Eclipse などの IDE。

Conholdate Maven リポジトリと SDK 依存関係を pom.xml に追加します:

<repositories>
    <repository>
        <id>conholdate-repo</id>
        <name>Conholdate Maven Repository</name>
        <url>https://repository.conholdate.com/repo/</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.conholdate</groupId>
    <artifactId>conholdate-total</artifactId>
    <version>24.9</version>
    <type>pom</type>
</dependency>

手動でセットアップしたい場合は、ダウンロードページから最新の SDK バイナリをダウンロードしてください。依存関係が解決したら、コーディングを開始する準備が整います。次のセクションでは、Java で取り消し線テキストを追加する各手順を説明します。

Javaで取り消し線テキストを使用するステップバイステップガイド

ステップ 1: ソース ドキュメントをロードする

まず、Document インスタンスを作成します。入力ファイルが存在する場合、SDK はそれをロードします。存在しない場合は、新しい空のドキュメントが作成されます。

String inputPath = "input.docx";
Document doc;
File inputFile = new File(inputPath);
if (inputFile.exists()) {
    doc = new Document(inputPath); // loads existing DOCX
} else {
    doc = new Document();          // creates a new blank document
    doc.removeAllChildren();       // ensure it's empty
}

Document クラスは API リファレンス に記載されています。

ステップ 2: 通常の段落を書く

DocumentBuilder を使用して通常の段落を追加します。これは、取り消し線の設定の影響を受けずに通常のテキストが表示されることを示しています。

DocumentBuilder builder = new DocumentBuilder(doc);
builder.moveToDocumentEnd();
builder.writeln("This is a normal paragraph.");

ステップ 3: 打ち消し線の書式設定を適用

ビルダーのフォントで取り消し線フラグを有効にしてから、スタイル付きテキストを書き込みます。

builder.getFont().setStrikeThrough(true);
builder.writeln("This text is rendered with strikethrough.");
builder.getFont().setStrikeThrough(false); // reset for subsequent text

ステップ 4: 条件付き取り消し線の検索と適用

すべての Run オブジェクトを反復処理し、単語 “strike” を見つけ、プログラムで書式設定を適用します。

for (Paragraph para : (Iterable<Paragraph>) doc.getChildNodes(NodeType.PARAGRAPH, true)) {
    for (Run run : (Iterable<Run>) para.getChildNodes(NodeType.RUN, true)) {
        String text = run.getText();
        if (text != null && text.toLowerCase().contains("strike")) {
            run.getFont().setStrikeThrough(true);
        }
    }
}

ステップ 5: ドキュメントを保存

最後に、変更されたドキュメントを DOCX 形式でディスクに書き込みます。

String outputPath = "output.docx";
doc.save(outputPath, SaveFormat.DOCX);

ドキュメントを保存したら、output.docx を開いて、取り消し線のスタイルが期待通りに表示されていることを確認できます。

取り消し線テキストの完全動作例(Java)

次のコードは、JavaでConholdate.Totalを使用して取り消し線テキストを追加する完全なワークフローを示しています。

import com.aspose.words.*;

import java.io.File;

public class StrikethroughExample {
    public static void main(String[] args) {
        String inputPath = "input.docx";
        String outputPath = "output.docx";

Document doc = null;
        try {
            File inputFile = new File(inputPath);
            if (inputFile.exists()) {
                doc = new Document(inputPath);
            } else {
                doc = new Document();
                doc.removeAllChildren();
            }

DocumentBuilder builder = new DocumentBuilder(doc);
            builder.moveToDocumentEnd();

builder.writeln("This is a normal paragraph.");

builder.getFont().setStrikeThrough(true);
            builder.writeln("This text is rendered with strikethrough.");
            builder.getFont().setStrikeThrough(false);

for (Paragraph para : (Iterable<Paragraph>) doc.getChildNodes(NodeType.PARAGRAPH, true)) {
                for (Run run : (Iterable<Run>) para.getChildNodes(NodeType.RUN, true)) {
                    String text = run.getText();
                    if (text != null && text.toLowerCase().contains("strike")) {
                        run.getFont().setStrikeThrough(true);
                    }
                }
            }

doc.save(outputPath, SaveFormat.DOCX);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (doc != null) {
                doc = null;
            }
        }
    }
}

Note: このコード例はコア機能を示しています。プロジェクトで使用する前に、ファイルパスや構成値を実際の環境に合わせて更新し、すべての必須依存関係が正しくインストールされていることを確認し、開発環境で徹底的にテストしてください。問題が発生した場合は、公式ドキュメント を参照するか、サポートチーム にお問い合わせください。

取り消し線スタイリングオプションの微調整

SDK を使用すると、カラー、サイズ、下線などの追加フォント属性を制御しながら、取り消し線フラグを有効にしたままにできます。たとえば、取り消し線テキストの色を変更できます:

builder.getFont().setColor(java.awt.Color.RED);
builder.getFont().setStrikeThrough(true);
builder.writeln("Important deletion highlighted in red.");

多数の Run に同じスタイルを適用する必要がある場合は、再利用可能な Font インスタンスを作成し、各 Run に割り当てて、プロパティ設定の繰り返しを避けることを検討してください。

打ち消し線レンダリングのパフォーマンス考慮事項

  1. Document オブジェクトを再利用 - ドキュメントを一度だけロードし、すべての変更を単一のセッションで実行すると I/O のオーバーヘッドが削減されます。
  2. スタイル変更をバッチ処理 - Paragraph または Run コレクションに取り消し線フラグを適用し、各文字ごとに切り替えるのではなく行います。
  3. 不要な走査を回避 - 単語 “strike” を検索する条件ループは、動的スタイリングが実際に必要なときだけ実行すべきです。
  4. 可能な限りストリーム出力 - 大きなドキュメントの場合、doc.save(OutputStream, SaveFormat.DOCX) を使用してストリームに直接書き込み、メモリを節約します。

これらのヒントは、特にバッチジョブで数百のドキュメントを処理する際に、メモリ使用量を低く抑え、実行時間を高速に保つのに役立ちます。

最後の考え

Javaで取り消し線テキストを追加するのは、Conholdate.Total for Java を使用すれば簡単です。SDK のフルエント API を使用すると、通常の段落とスタイル付き段落を混在させ、条件付き書式を適用し、業界標準の形式で結果を保存できます。最適なパフォーマンスを実現するために、Maven 依存関係を設定し、ドキュメント オブジェクトを再利用し、スタイルを効率的に適用することを忘れないでください。本番環境へのデプロイには有効なライセンスが必要です。価格の詳細はpricing pageで確認でき、臨時ライセンスはtemporary license pageから取得できます。コーディングをお楽しみください!

ご質問があるかもしれません

  • Javaで各ランごとにフラグを手動で設定せずに取り消し線テキストを適用するにはどうすればよいですか?
    段落を書き込む前に DocumentBuilder.getFont().setStrikeThrough(true) を使用します。このフラグはリセットするまで有効なままで、同じスタイルで複数行を書き込むことができます。

  • キーワードのすべての出現箇所に自動的に取り消し線を付けることはできますか?
    はい。ウォークスルーに示されているように各 Run を反復処理し、キーワードについて run.getText() をチェックし、一致した場合は run.getFont().setStrikeThrough(true) を呼び出します。

  • 保存時に取り消し線を保持するドキュメント形式はどれですか?
    DOCX、DOC、RTF、およびその他のリッチテキスト形式は取り消し線属性を保持します。サポートされている形式の完全なリストについては、公式ドキュメントをご参照ください。

  • 多数の取り消し線スタイルを適用すると、大きなファイルの処理が遅くなりますか?
    パフォーマンスのヒントに従えば影響は最小限です。Document インスタンスを再利用し、スタイル変更をバッチ処理し、冗長な走査を避けます。これによりメモリ使用量が抑えられ、処理速度が向上します。

関連記事