Strikethrough formatting은 생성된 문서에서 삭제, 수정 또는 완료된 작업을 표시하기 위해 자주 필요합니다. 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;
            }
        }
    }
}

참고: 이 코드 예제는 핵심 기능을 보여줍니다. 프로젝트에 사용하기 전에 파일 경로와 구성 값을 실제 환경에 맞게 업데이트하고, 모든 필수 종속성이 올바르게 설치되었는지 확인하며, 개발 환경에서 충분히 테스트하십시오. 문제가 발생하면 공식 문서를 참조하거나 지원 팀에 문의하십시오.

취소선 스타일 옵션 미세 조정

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 종속성을 구성하고, 문서 객체를 재사용하며, 스타일을 효율적으로 적용하여 최적의 성능을 달성하십시오. 프로덕션 배포를 위해서는 유효한 라이선스가 필요합니다; 가격 세부 정보는 가격 페이지에서 확인할 수 있으며, 임시 라이선스는 임시 라이선스 페이지에서 얻을 수 있습니다. 즐거운 코딩 되세요!

자주 묻는 질문

  • Java에서 각 실행마다 플래그를 수동으로 설정하지 않고 취소선을 적용하려면 어떻게 해야 하나요?
    문단을 쓰기 전에 DocumentBuilder.getFont().setStrikeThrough(true)를 사용하십시오. 플래그는 재설정할 때까지 활성 상태를 유지하므로 동일한 스타일로 여러 줄을 쓸 수 있습니다.

  • 키워드가 나타나는 모든 경우에 자동으로 취소선을 적용할 수 있나요?
    예. 워크스루에 표시된 대로 각 Run을 반복하고 run.getText()에서 키워드를 확인한 다음 일치하면 run.getFont().setStrikeThrough(true)를 호출합니다.

  • 어떤 문서 형식이 저장할 때 취소선을 유지합니까?
    DOCX, DOC, RTF, 및 기타 리치‑텍스트 형식은 취소선 속성을 유지합니다. 전체 지원 형식 목록은 공식 문서를 참조하십시오.

  • 많은 취소선 스타일을 적용하면 대용량 파일 처리 속도가 느려지나요?
    성능 팁을 따르시면 영향은 최소화됩니다: Document 인스턴스를 재사용하고, 스타일 변경을 일괄 처리하며, 중복된 순회를 피하십시오. 이렇게 하면 메모리 사용량이 낮아지고 처리 속도가 빨라집니다.

관련 기사