تبدیل برنامه‌نویسی صفحات OneNote به فایل‌های تصویری یک نیاز رایج هنگام ساخت ژنراتورهای پیش‌نمایش یا نمایشگرهای موبایلی است. SDK Conholdate.Total for Java به راحتی امکان تبدیل OneNote به تصویر در Java را بدون نیاز به Microsoft Office روی سرور فراهم می‌کند. در این راهنما پیاده‌سازی کامل و ایمن در برابر نخ‌ها، گزینه‌های خروجی برای PNG و JPEG و نکات پردازش در حافظه را خواهید دید.

تبدیل OneNote به تصویر در Java - راهنمای گام به گام

  1. راه‌اندازی جریان کار تبدیل: فایل OneNote را به یک InputStream بارگذاری کنید و یک نمونه Converter ایجاد کنید - هسته تبدیل Onenote به تصویر در جریان کار Java.

    InputStream fileStream = new BufferedInputStream(new FileInputStream("sample.one"));
    Converter converter = new Converter(fileStream);
    
  2. تعیین تعداد صفحاتی که باید تبدیل شوند: دریافت تعداد کل صفحات از Converter.

int pageCount = converter.getPageCount();
  1. پیکربندی گزینه‌های تصویر برای هر صفحه: فرمت خروجی، کیفیت و اندیس صفحه صفر‑پایه را با استفاده از ImageConvertOptions تنظیم کنید.
ImageConvertOptions options = new ImageConvertOptions();
options.setFormat(ImageSaveOptions.ImageFormat.PNG);
options.setQuality(90);
options.setPageNumber(pageIndex);
  1. تبدیل صفحات به صورت موازی: از ExecutorService برای اجرای تبدیل‌ها به‌صورت همزمان استفاده کنید و هر صفحه را در یک فایل PNG جداگانه بنویسید.
ExecutorService executor = Executors.newFixedThreadPool(
        Runtime.getRuntime().availableProcessors());
executor.submit(() -> {
    // conversion logic per page
});
  1. تبدیل اختیاری در‑حافظه: برای سناریوهایی که نیاز به بایت‌های تصویر به‌صورت مستقیم دارید (مثلاً ارسال از طریق شبکه)، صفحهٔ اول را به یک ByteArrayOutputStream تبدیل کنید.
ImageConvertOptions memOptions = new ImageConvertOptions();
memOptions.setFormat(ImageSaveOptions.ImageFormat.JPEG);
memOptions.setPageNumber(0);
ByteArrayOutputStream memoryStream = new ByteArrayOutputStream();
converter.convert(memoryStream, memOptions);

برای جزئیات بیشتر در مورد کلاس Converter و متدهای آن، به مرجع رسمی API مراجعه کنید.

مثال کامل کارآمد برای تبدیل OneNote به تصویر در Java - پردازش موازی صفحات

کد زیر یک پیاده‌سازی کامل از نحوه تبدیل Onenote به تصویر در جاوا با استفاده از Conholdate.Total را نشان می‌دهد.

import com.groupdocs.conversion.Converter;
import com.groupdocs.conversion.options.convert.ImageConvertOptions;
import com.groupdocs.conversion.options.convert.ImageSaveOptions;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class ConvertOneNoteToImage {
    public static void main(String[] args) {
        String inputPath = "sample.one";
        String outputPattern = "output_page_%d.png";
        int imageQuality = 90; // 0-100

// Thread pool for parallel page conversion
        ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());

try (InputStream fileStream = new BufferedInputStream(new FileInputStream(inputPath));
             Converter converter = new Converter(fileStream)) {

int pageCount = converter.getPageCount();

for (int i = 0; i < pageCount; i++) {
                final int pageIndex = i;
                executor.submit(() -> {
                    ImageConvertOptions options = new ImageConvertOptions();
                    options.setFormat(ImageSaveOptions.ImageFormat.PNG);
                    options.setQuality(imageQuality);
                    options.setPageNumber(pageIndex); // zero‑based page index

String outputPath = String.format(outputPattern, pageIndex + 1);
                    try (OutputStream outStream = new BufferedOutputStream(new FileOutputStream(outputPath))) {
                        converter.convert(outStream, options);
                        System.out.println("Page " + (pageIndex + 1) + " saved to " + outputPath);
                    } catch (Exception e) {
                        System.err.println("Failed to convert page " + (pageIndex + 1) + ": " + e.getMessage());
                    }
                });
            }

// Example of in‑memory conversion for the first page
            ImageConvertOptions memOptions = new ImageConvertOptions();
            memOptions.setFormat(ImageSaveOptions.ImageFormat.JPEG);
            memOptions.setQuality(imageQuality);
            memOptions.setPageNumber(0);
            try (ByteArrayOutputStream memoryStream = new ByteArrayOutputStream()) {
                converter.convert(memoryStream, memOptions);
                byte[] imageBytes = memoryStream.toByteArray();
                System.out.println("In‑memory conversion produced " + imageBytes.length + " bytes for page 1.");
                // imageBytes can now be sent over network, stored in DB, etc.
            } catch (Exception e) {
                System.err.println("In‑memory conversion error: " + e.getMessage());
            }

} catch (IOException e) {
            System.err.println("File access error: " + e.getMessage());
        } catch (Exception e) {
            System.err.println("Conversion initialization error: " + e.getMessage());
        } finally {
            executor.shutdown();
            try {
                if (!executor.awaitTermination(60, TimeUnit.SECONDS)) {
                    executor.shutdownNow();
                }
            } catch (InterruptedException ie) {
                executor.shutdownNow();
                Thread.currentThread().interrupt();
            }
        }
    }
}

توجه: این مثال کد عملکرد اصلی را نشان می‌دهد. قبل از استفاده از آن در پروژه خود، مطمئن شوید مسیرهای فایل (sample.one، output_page_%d.png و غیره) را به مکان‌های واقعی فایل‌های خود به‌روز کنید، اطمینان حاصل کنید تمام وابستگی‌های مورد نیاز به‌درستی نصب شده‌اند و به‌طور کامل در محیط توسعه خود تست کنید. اگر با مشکلی مواجه شدید، لطفاً به مستندات رسمی مراجعه کنید یا برای دریافت کمک با تیم پشتیبانی تماس بگیرید.

نصب و پیکربندی Conholdate.Total for Java

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

نتیجه‌گیری

با دنبال کردن این راهنما، اکنون پایه‌ای محکم برای تبدیل OneNote به تصویر در Java با استفاده از Conholdate.Total for Java دارید. این مثال خروجی PNG صفحه به صفحه، پردازش موازی برای سرعت، و گزینه در‑حافظه برای یکپارچه‌سازی انعطاف‌پذیر را نشان می‌دهد. به یاد داشته باشید که ImageConvertOptions را طوری تنظیم کنید که با فرمت و کیفیت تصویر مورد نیاز شما مطابقت داشته باشد و منابع را با بلوک‌های try‑with‑resources همان‌طور که نشان داده شده مدیریت کنید. برای پروژه‌های تجاری، از طریق صفحه قیمت‌گذاری یک لایسنس مناسب تهیه کنید و تبدیل را با فایل‌های واقعی OneNote آزمایش کنید تا اطمینان حاصل شود تمام محتوا به‌درستی رندر می‌شود. API گسترده و مستندات SDK تبدیل این راه حل را به پردازش دسته‌ای یا خدمات مبتنی بر ابر گسترش می‌دهد.

سوالات متداول

  • آیا می‌توانم OneNote را به تصویر در Java تبدیل کنم بدون نصب Microsoft Office؟
    بله. SDK Conholdate.Total تمام رندرینگ را به صورت داخلی انجام می‌دهد، بنابراین نیازی به نصب Office بر روی سرور نیست.

  • کدام فرمت‌های تصویر توسط تبدیل پشتیبانی می‌شوند؟
    می‌توانید با تنظیم ویژگی ImageSaveOptions.ImageFormat به فرمت‌های PNG، JPEG، BMP، GIF، و TIFF صادر کنید.

  • چگونه عملکرد نوت‌بوک‌های بزرگ را بهبود دهم؟
    از استخر رشته‌ای داخلی همان‌طور که نشان داده شده استفاده کنید و هنگام نیاز فقط به بایت‌های تصویر، ترجیحاً تبدیل در حافظه را انتخاب کنید تا از I/O دیسک جلوگیری شود.

  • کجا می‌توانم مثال‌های بیشتر و جزئیات API را پیدا کنم؟
    مستندات رسمی راهنمایی‌های گسترده‌ای ارائه می‌دهد و مرجع API تمام کلاس‌ها و متدها را فهرست می‌کند.

بیشتر بخوانید