Định dạng gạch ngang thường được yêu cầu để chỉ ra các phần bị xóa, sửa đổi hoặc các nhiệm vụ đã hoàn thành trong các tài liệu được tạo. Conholdate.Total for Java cung cấp một SDK mạnh mẽ cho phép bạn thao tác với các tài liệu Word một cách lập trình. Trong hướng dẫn này, bạn sẽ học cách thêm văn bản gạch ngang trong Java, khám phá các tùy chọn cấu hình, xem các thực tiễn tốt nhất về hiệu năng, và chạy một ví dụ hoàn chỉnh mà bạn có thể điều chỉnh cho các dự án của mình.

Trước Khi Bắt Đầu: Các Yêu Cầu Trước và Cài Đặt

Để làm theo hướng dẫn này, bạn cần:

  • Java 17 hoặc mới hơn được cài đặt trên máy phát triển của bạn.
  • Maven 3.6+ để quản lý phụ thuộc.
  • Một IDE như IntelliJ IDEA hoặc Eclipse.

Thêm kho Maven của Conholdate và phụ thuộc SDK vào pom.xml của bạn:

<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>

Tải xuống các tệp nhị phân SDK mới nhất từ trang tải xuống nếu bạn muốn cài đặt thủ công. Khi phụ thuộc đã được giải quyết, bạn đã sẵn sàng để bắt đầu lập trình. Phần tiếp theo sẽ hướng dẫn chi tiết từng bước để thêm văn bản gạch ngang trong Java.

Hướng dẫn từng bước để gạch ngang văn bản trong Java

Bước 1: Tải tài liệu nguồn

Đầu tiên, tạo một thể hiện Document. Nếu tệp đầu vào tồn tại, SDK sẽ tải nó; nếu không, một tài liệu trống mới sẽ được tạo.

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
}

Lớp Document được tài liệu hoá trong tài liệu API.

Bước 2: Viết đoạn văn bình thường

Sử dụng DocumentBuilder để thêm một đoạn văn thông thường. Điều này cho thấy văn bản bình thường không bị ảnh hưởng bởi cài đặt gạch ngang.

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

Bước 3: Áp dụng định dạng gạch ngang

Bật cờ gạch ngang trên phông chữ của builder trước khi ghi văn bản có định dạng.

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

Bước 4: Tìm kiếm và Áp dụng Gạch ngang có Điều kiện

Lặp lại qua tất cả các đối tượng Run, tìm từ “strike” và áp dụng định dạng bằng chương trình.

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);
        }
    }
}

Bước 5: Lưu tài liệu

Cuối cùng, ghi tài liệu đã chỉnh sửa vào đĩa ở định dạng DOCX .

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

Sau khi lưu tài liệu, bạn có thể mở output.docx để xác nhận rằng định dạng gạch ngang xuất hiện như mong đợi.

Ví dụ Hoạt động Đầy đủ cho Văn bản Gạch Ngang trong Java

Đoạn mã sau đây minh họa quy trình hoàn chỉnh để thêm văn bản gạch ngang trong Java bằng 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;
            }
        }
    }
}

Lưu ý: Ví dụ mã này minh họa chức năng cốt lõi. Trước khi sử dụng trong dự án của bạn, hãy chắc chắn cập nhật mọi đường dẫn tệp và giá trị cấu hình để phù hợp với môi trường thực tế của bạn, xác minh rằng tất cả các phụ thuộc cần thiết đã được cài đặt đúng cách, và kiểm tra kỹ lưỡng trong môi trường phát triển. Nếu bạn gặp bất kỳ vấn đề nào, vui lòng tham khảo tài liệu chính thức hoặc liên hệ với đội hỗ trợ để được trợ giúp.

Tinh chỉnh các tùy chọn kiểu dáng gạch ngang

SDK cho phép bạn kiểm soát các thuộc tính phông chữ bổ sung như màu sắc, kích thước và gạch chân trong khi vẫn giữ cờ gạch ngang được bật. Ví dụ, bạn có thể thay đổi màu của văn bản gạch ngang:

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

Nếu bạn cần áp dụng cùng một kiểu cho nhiều đoạn văn bản, hãy xem xét việc tạo một thể hiện Font có thể tái sử dụng và gán nó cho mỗi Run để tránh việc đặt thuộc tính lặp lại.

Các cân nhắc về hiệu năng khi render gạch ngang

  1. Tái sử dụng đối tượng Document - tải tài liệu một lần và thực hiện tất cả các sửa đổi trong một phiên duy nhất giúp giảm tải I/O.
  2. Thay đổi kiểu dáng hàng loạt - áp dụng cờ gạch ngang (strike‑through) cho một tập hợp Paragraph hoặc Run thay vì bật tắt cho từng ký tự.
  3. Tránh các lần duyệt không cần thiết - vòng lặp điều kiện tìm từ “strike” chỉ nên thực hiện khi bạn thực sự cần kiểu dáng động.
  4. Gửi luồng đầu ra khi có thể - đối với tài liệu lớn, sử dụng doc.save(OutputStream, SaveFormat.DOCX) để ghi trực tiếp vào luồng và tiết kiệm bộ nhớ.

Những mẹo này giúp giữ mức sử dụng bộ nhớ thấp và thời gian thực thi nhanh, đặc biệt khi xử lý hàng trăm tài liệu trong một công việc batch.

Kết luận

Thêm văn bản gạch ngang trong Java rất đơn giản với Conholdate.Total for Java. API fluent của SDK cho phép bạn trộn các đoạn văn bản thường và có kiểu, áp dụng định dạng có điều kiện, và lưu kết quả ở các định dạng tiêu chuẩn công nghiệp. Hãy nhớ cấu hình phụ thuộc Maven của bạn, tái sử dụng các đối tượng tài liệu, và áp dụng kiểu một cách hiệu quả để đạt hiệu suất tối ưu. Đối với triển khai sản xuất, bạn sẽ cần một giấy phép hợp lệ; chi tiết giá cả có sẵn trên trang giá và giấy phép tạm thời có thể được lấy từ trang giấy phép tạm thời. Chúc lập trình vui vẻ!

Câu hỏi bạn có thể có

  • Làm thế nào để áp dụng văn bản gạch ngang trong Java mà không cần thiết lập cờ thủ công cho mỗi lần chạy?
    Sử dụng DocumentBuilder.getFont().setStrikeThrough(true) trước khi viết đoạn văn. Cờ sẽ vẫn hoạt động cho đến khi bạn đặt lại, cho phép bạn viết nhiều dòng với cùng một kiểu.

  • Có thể tự động gạch ngang mọi lần xuất hiện của một từ khóa không?
    Có. Duyệt qua từng Run như trong hướng dẫn, kiểm tra run.getText() để tìm từ khóa, và gọi run.getFont().setStrikeThrough(true) khi tìm thấy khớp.

  • Các định dạng tài liệu nào giữ lại gạch ngang khi lưu? DOCX, DOC, RTF, và các định dạng văn bản phong phú khác giữ lại thuộc tính gạch ngang. Tham khảo tài liệu chính thức để có danh sách đầy đủ các định dạng được hỗ trợ.

  • Việc áp dụng nhiều kiểu gạch ngang sẽ làm chậm quá trình xử lý các tệp lớn không?
    Tác động là tối thiểu nếu bạn tuân theo các mẹo hiệu năng: tái sử dụng đối tượng Document, thực hiện thay đổi kiểu theo lô, và tránh các lần duyệt lặp lại không cần thiết. Điều này giữ mức sử dụng bộ nhớ thấp và tăng tốc quá trình xử lý.

Bài viết liên quan