Форматирование зачеркиванием часто требуется для обозначения удалений, правок или выполненных задач в сгенерированных документах. Conholdate.Total for Java предоставляет мощный SDK, позволяющий программно работать с документами Word. В этом руководстве вы узнаете, как добавить зачеркивание текста в Java, изучите параметры конфигурации, ознакомитесь с лучшими практиками производительности и запустите полный пример, который можно адаптировать к своим проектам.
Прежде чем начать: Предварительные требования и установка
Для выполнения этого руководства вам понадобится:
- Java 17 или новее, установленный на вашей машине разработки.
- Maven 3.6+ для управления зависимостями.
- IDE, такая как IntelliJ IDEA или Eclipse.
Добавьте репозиторий Maven Conholdate и зависимость 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, чтобы избежать повторяющихся установок свойств.
Соображения по производительности при рендеринге зачеркивания
- Повторное использование объекта
Document- загрузка документа один раз и выполнение всех изменений в одной сессии снижает нагрузку ввода‑вывода. - Групповые изменения стилей - применяйте флаг зачеркивания к коллекции
ParagraphилиRun, а не переключайте его для каждого символа. - Избегайте ненужных обходов - условный цикл, ищущий слово “strike”, должен выполняться только тогда, когда действительно требуется динамическое стилизование.
- По возможности используйте потоковый вывод - для больших документов используйте
doc.save(OutputStream, SaveFormat.DOCX), чтобы записывать напрямую в поток и экономить память.
Эти советы помогают поддерживать низкое использование памяти и быстрое время выполнения, особенно при обработке сотен документов в пакетной задаче.
Заключительные мысли
Добавление зачеркиваемого текста в Java простое с помощью Conholdate.Total for Java. Флюентный API SDK позволяет смешивать обычные и стилизованные абзацы, применять условное форматирование и сохранять результаты в отраслевых стандартах. Не забудьте настроить зависимость Maven, повторно использовать объекты документа и эффективно применять стили для достижения оптимальной производительности. Для продакшн‑развертываний вам понадобится действующая лицензия; детали ценообразования доступны на странице ценообразования и временную лицензию можно получить со страницы временной лицензии. Приятного кодинга!
Вопросы, которые у вас могут возникнуть
Как применить зачеркивание текста в Java без ручной установки флага для каждого запуска?
ИспользуйтеDocumentBuilder.getFont().setStrikeThrough(true)перед записью абзаца. Флаг остаётся активным, пока вы не сбросите его, что позволяет писать несколько строк с одинаковым стилем.Могу ли я автоматически зачеркивать каждое вхождение ключевого слова?
Да. Пройдите по каждомуRun, как показано в руководстве, проверьтеrun.getText()на наличие ключевого слова и вызовитеrun.getFont().setStrikeThrough(true), когда найдено совпадение.Какие форматы документов сохраняют зачеркивание при сохранении?
DOCX, DOC, RTF, и другие форматы с форматированным текстом сохраняют атрибут зачеркивания. Обратитесь к официальной документации для полного списка поддерживаемых форматов.Приведёт ли применение множества стилей зачёркивания к замедлению обработки больших файлов?
Воздействие минимально, если вы следуете рекомендациям по производительности: переиспользуйте экземплярDocument, группируйте изменения стилей и избегайте избыточных обходов. Это снижает использование памяти и ускоряет обработку.
