Formatowanie przekreśleniem jest często wymagane, aby wskazać usunięcia, poprawki lub zakończone zadania w generowanych dokumentach. Conholdate.Total for Java zapewnia solidny SDK, który umożliwia programowe manipulowanie dokumentami Word. W tym przewodniku dowiesz się, jak dodać tekst z przekreśleniem w Javie, poznasz opcje konfiguracji, zobaczysz najlepsze praktyki wydajnościowe oraz uruchomisz kompletny przykład, który możesz dostosować do własnych projektów.

Przed rozpoczęciem: Wymagania wstępne i instalacja

Aby podążać za tym samouczkiem, potrzebujesz:

  • Java 17 lub nowszy zainstalowany na Twoim komputerze deweloperskim.
  • Maven 3.6+ do zarządzania zależnościami.
  • IDE, takie jak IntelliJ IDEA lub Eclipse.

Dodaj repozytorium Maven Conholdate oraz zależność SDK do swojego 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>

Pobierz najnowsze pliki binarne SDK ze strony pobierania, jeśli wolisz ręczną konfigurację. Po rozwiązaniu zależności jesteś gotowy, aby rozpocząć kodowanie. Następny rozdział przechodzi przez każdy krok dodawania przekreślonego tekstu w Javie.

Przewodnik krok po kroku do przekreślania tekstu w Javie

Krok 1: Załaduj dokument źródłowy

Najpierw utwórz instancję Document. Jeśli plik wejściowy istnieje, SDK go ładuje; w przeciwnym razie tworzony jest nowy pusty dokument.

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
}

Klasa Document jest udokumentowana w referencji API.

Krok 2: Napisz zwykły akapit

Użyj DocumentBuilder, aby dodać zwykły akapit. To pokazuje, że zwykły tekst nie jest dotknięty ustawieniami przekreślenia.

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

Krok 3: Zastosuj formatowanie przekreślenia

Włącz flagę przekreślenia w czcionce buildera przed zapisaniem stylowanego tekstu.

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

Krok 4: Wyszukaj i zastosuj warunkowe przekreślenie

Iteruj po wszystkich obiektach Run, znajdź słowo “strike” i zastosuj formatowanie programowo.

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

Krok 5: Zapisz dokument

Na koniec zapisz zmodyfikowany dokument na dysku w formacie DOCX.

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

Po zapisaniu dokumentu możesz otworzyć output.docx, aby zweryfikować, że styl przekreślenia wyświetla się zgodnie z oczekiwaniami.

Pełny działający przykład dla przekreślonego tekstu w Javie

Poniższy kod demonstruje kompletny przepływ pracy dodawania przekreślonego tekstu w języku Java przy użyciu 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;
            }
        }
    }
}

Uwaga: Ten przykład kodu demonstruje podstawową funkcjonalność. Przed użyciem go w swoim projekcie upewnij się, że zaktualizowałeś wszystkie ścieżki plików i wartości konfiguracyjne, aby odpowiadały rzeczywistemu środowisku, sprawdź, czy wszystkie wymagane zależności są prawidłowo zainstalowane, oraz dokładnie przetestuj w środowisku deweloperskim. Jeśli napotkasz jakiekolwiek problemy, odwołaj się do oficjalnej dokumentacji lub skontaktuj się z zespołem wsparcia po pomoc.

Dostosowywanie opcji stylizacji przekreślenia

SDK pozwala kontrolować dodatkowe atrybuty czcionki, takie jak kolor, rozmiar i podkreślenie, jednocześnie pozostawiając włączoną flagę przekreślenia. Na przykład możesz zmienić kolor tekstu przekreślonego:

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

Jeśli musisz zastosować ten sam styl do wielu fragmentów tekstu, rozważ utworzenie wielokrotnego użytku instancji Font i przypisanie jej do każdego Run, aby uniknąć powtarzalnego ustawiania właściwości.

Rozważania dotyczące wydajności renderowania przekreślenia

  1. Ponowne użycie obiektu Document – wczytanie dokumentu raz i wykonanie wszystkich modyfikacji w jednej sesji zmniejsza obciążenie I/O.
  2. Zbiorcze zmiany stylów – zastosuj flagę przekreślenia do kolekcji Paragraph lub Run, zamiast przełączać ją dla każdego znaku.
  3. Unikaj niepotrzebnych przeglądów – pętla warunkowa, która wyszukuje słowo “strike”, powinna być wykonywana tylko wtedy, gdy naprawdę potrzebujesz dynamicznego stylowania.
  4. Strumieniuj wyjście, gdy to możliwe – dla dużych dokumentów użyj doc.save(OutputStream, SaveFormat.DOCX), aby zapisać bezpośrednio do strumienia i oszczędzić pamięć.

Te wskazówki pomagają utrzymać niskie zużycie pamięci i szybki czas wykonywania, szczególnie przy przetwarzaniu setek dokumentów w zadaniu wsadowym.

Końcowe przemyślenia

Dodawanie przekreślonego tekstu w Javie jest proste dzięki Conholdate.Total for Java. Fluent API SDK pozwala mieszać zwykłe i stylizowane akapity, stosować formatowanie warunkowe oraz zapisywać wyniki w standardowych formatach branżowych. Pamiętaj, aby skonfigurować zależność Maven, ponownie używać obiektów dokumentu i efektywnie stosować style, aby osiągnąć optymalną wydajność. W środowiskach produkcyjnych potrzebna będzie ważna licencja; szczegóły cenowe dostępne są na stronie cenowej oraz tymczasową licencję można uzyskać ze strony tymczasowej licencji. Szczęśliwego kodowania!

Pytania, które możesz mieć

  • Jak zastosować przekreślony tekst w Javie bez ręcznego ustawiania flagi dla każdego uruchomienia?
    Użyj DocumentBuilder.getFont().setStrikeThrough(true) przed zapisaniem akapitu. Flaga pozostaje aktywna, dopóki jej nie zresetujesz, co pozwala na pisanie wielu linii z tym samym stylem.

  • Czy mogę automatycznie przekreślić każde wystąpienie słowa kluczowego?
    Tak. Przejdź przez każdy Run jak pokazano w przewodniku, sprawdź run.getText() pod kątem słowa kluczowego i wywołaj run.getFont().setStrikeThrough(true), gdy znajdziesz dopasowanie.

  • Które formaty dokumentów zachowują przekreślenie po zapisaniu?
    DOCX, DOC, RTF, oraz inne formaty tekstu sformatowanego zachowują atrybut przekreślenia. Odwołaj się do oficjalnej dokumentacji po pełną listę obsługiwanych formatów.

  • Czy stosowanie wielu stylów przekreślenia spowolni przetwarzanie dużych plików?
    Wpływ jest minimalny, jeśli zastosujesz wskazówki dotyczące wydajności: ponownie używaj instancji Document, grupuj zmiany stylów i unikaj zbędnych przeglądów. To utrzymuje niskie zużycie pamięci i przyspiesza przetwarzanie.

Powiązane artykuły