Программное преобразование страниц 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();
    
  3. Настройте параметры изображения для каждой страницы: Установите формат вывода, качество и нулевой‑базовый индекс страницы, используя ImageConvertOptions.

    ImageConvertOptions options = new ImageConvertOptions();
    options.setFormat(ImageSaveOptions.ImageFormat.PNG);
    options.setQuality(90);
    options.setPageNumber(pageIndex);
    
  4. Параллельное преобразование страниц: Используйте ExecutorService для одновременного выполнения преобразований, записывая каждую страницу в отдельный PNG‑файл.

    ExecutorService executor = Executors.newFixedThreadPool(
            Runtime.getRuntime().availableProcessors());
    executor.submit(() -> {
        // conversion logic per page
    });
    
  5. Необязательное преобразование в памяти: Для сценариев, когда вам нужны байты изображения напрямую (например, при передаче по сети), преобразуйте первую страницу в 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 в изображение на Java с использованием 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?
    Да. Conholdate.Total SDK выполняет всю отрисовку внутри, поэтому установка Office на сервере не требуется.

  • Какие форматы изображений поддерживает конверсия?
    Вы можете экспортировать в PNG, JPEG, BMP, GIF, и TIFF задав свойство ImageSaveOptions.ImageFormat.

  • Как улучшить производительность при работе с большими ноутбуками?
    Используйте встроенный пул потоков, как показано, и предпочтительно выполняйте преобразование в памяти, когда вам нужны только байты изображения, избегая ввода‑вывода на диск.

  • Где я могу найти больше примеров и детали API?
    Официальная документация предоставляет обширные руководства, а справочник API перечисляет все классы и методы.

Читать далее