قالب‌بندی خط‌خورده اغلب برای نشان دادن حذف‌ها، بازنگری‌ها یا وظایف تکمیل‌شده در اسناد تولید شده مورد نیاز است. 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 را مرور می‌کند.

راهنمای گام‌به‌گام برای متن خط‌خورده در جاوا

مرحله 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 مستند شده است.

مرحله ۲: نوشتن پاراگراف معمولی

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

کد زیر جریان کاری کامل برای افزودن متن خط‌خورده در جاوا با استفاده از 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 - بارگذاری یک سند یک بار و انجام تمام تغییرات در یک جلسه واحد، بار ورودی/خروجی را کاهش می‌دهد.
  2. تغییرات سبک به صورت دسته‌ای - پرچم خط‌خورده را به مجموعه‌ای از Paragraph یا Run اعمال کنید به جای این که برای هر کاراکتر آن را تغییر دهید.
  3. از پیمایش‌های غیرضروری جلوگیری کنید - حلقه شرطی که به دنبال واژه “strike” می‌گردد باید فقط زمانی اجرا شود که واقعاً به استایل‌گذاری پویا نیاز دارید.
  4. در صورت امکان خروجی را به‌صورت جریان (Stream) بنویسید - برای اسناد بزرگ، از doc.save(OutputStream, SaveFormat.DOCX) استفاده کنید تا مستقیماً به یک جریان بنویسید و حافظه را حفظ کنید.

این نکات به حفظ مصرف کم حافظه و سرعت بالا در زمان اجرا کمک می‌کنند، به‌ویژه هنگام پردازش صدها سند در یک کار دسته‌ای.

نتیجه‌گیری نهایی

اضافه کردن متن خط خورده در جاوا به سادگی با Conholdate.Total for Java امکان‌پذیر است. API روان SDK به شما اجازه می‌دهد پاراگراف‌های معمولی و استایل‌دار را ترکیب کنید، قالب‌بندی شرطی اعمال کنید و نتایج را در فرمت‌های استاندارد صنعتی ذخیره کنید. به‌خاطر داشته باشید که وابستگی Maven خود را پیکربندی کنید، اشیای سند را مجدداً استفاده کنید و استایل‌ها را به‌صورت کارآمد اعمال کنید تا عملکرد بهینه حاصل شود. برای استقرارهای تولیدی به یک لایسنس معتبر نیاز دارید؛ جزئیات قیمت‌گذاری در صفحه قیمت‌گذاری موجود است و می‌توانید یک لایسنس موقت را از صفحه لایسنس موقت دریافت کنید. برنامه‌نویسی خوش!

ممکن است سوالاتی داشته باشید

  • چگونه می‌توانم متن خط‌خورده را در جاوا اعمال کنم بدون اینکه برای هر اجرا به‌صورت دستی پرچم را تنظیم کنم؟
    از DocumentBuilder.getFont().setStrikeThrough(true) قبل از نوشتن پاراگراف استفاده کنید. پرچم تا زمانی که آن را بازنشانی نکنید فعال می‌ماند و به شما اجازه می‌دهد چندین خط با همان سبک بنویسید.

  • آیا می‌توانم به‌صورت خودکار تمام موارد یک کلمه کلیدی را خط‌خورده کنم؟
    بله. همان‌طور که در راهنمای گام‌به‌گام نشان داده شده است، بر روی هر Run تکرار کنید، run.getText() را برای کلمه کلیدی بررسی کنید، و وقتی مطابقت یافت شد، run.getFont().setStrikeThrough(true) را فراخوانی کنید.

  • کدام فرمت‌های سند هنگام ذخیره‌سازی خط‌خورده را حفظ می‌کنند؟
    DOCX، DOC، RTF، و سایر فرمت‌های متن غنی ویژگی خط‌خورده را نگه می‌دارند. برای دریافت فهرست کامل فرمت‌های پشتیبانی‌شده به مستندات رسمی مراجعه کنید.

  • آیا اعمال تعداد زیادی استایل خط‌خورده باعث کاهش سرعت پردازش فایل‌های بزرگ می‌شود؟
    تأثیر آن کم است اگر نکات عملکردی را دنبال کنید: استفاده مجدد از نمونه Document، انجام تغییرات استایل به صورت دسته‌ای، و جلوگیری از پیمایش‌های تکراری. این کار مصرف حافظه را پایین نگه می‌دارد و سرعت پردازش را افزایش می‌دهد.

مقالات مرتبط