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
- Ponowne użycie obiektu
Document– wczytanie dokumentu raz i wykonanie wszystkich modyfikacji w jednej sesji zmniejsza obciążenie I/O. - Zbiorcze zmiany stylów – zastosuj flagę przekreślenia do kolekcji
ParagraphlubRun, zamiast przełączać ją dla każdego znaku. - Unikaj niepotrzebnych przeglądów – pętla warunkowa, która wyszukuje słowo “strike”, powinna być wykonywana tylko wtedy, gdy naprawdę potrzebujesz dynamicznego stylowania.
- 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żyjDocumentBuilder.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żdyRunjak pokazano w przewodniku, sprawdźrun.getText()pod kątem słowa kluczowego i wywołajrun.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 instancjiDocument, grupuj zmiany stylów i unikaj zbędnych przeglądów. To utrzymuje niskie zużycie pamięci i przyspiesza przetwarzanie.
