Converter programaticamente páginas do OneNote em arquivos de imagem é uma necessidade comum ao criar geradores de visualização ou visualizadores móveis. O SDK Conholdate.Total for Java facilita a conversão de Onenote para imagem em Java sem exigir o Microsoft Office no servidor. Neste guia você verá uma implementação completa e thread‑safe, opções de saída para PNG e JPEG, e dicas para processamento em memória.

Converter Onenote para Imagem em Java - Guia Passo a Passo

  1. Inicializar o fluxo de conversão: Carregue o arquivo OneNote em um InputStream e crie uma instância de Converter – o núcleo da conversão de OneNote para imagem em Java.

    InputStream fileStream = new BufferedInputStream(new FileInputStream("sample.one"));
    Converter converter = new Converter(fileStream);
    
  2. Determine quantas páginas precisam ser convertidas: Recupere a contagem total de páginas do Converter.

    int pageCount = converter.getPageCount();
    
  3. Configure as opções de imagem para cada página: Defina o formato de saída, a qualidade e o índice da página baseado em zero usando ImageConvertOptions.

    ImageConvertOptions options = new ImageConvertOptions();
    options.setFormat(ImageSaveOptions.ImageFormat.PNG);
    options.setQuality(90);
    options.setPageNumber(pageIndex);
    
  4. Converter páginas em paralelo: Use um ExecutorService para executar conversões simultaneamente, gravando cada página em um arquivo PNG separado.

    ExecutorService executor = Executors.newFixedThreadPool(
            Runtime.getRuntime().availableProcessors());
    executor.submit(() -> {
        // conversion logic per page
    });
    
  5. Conversão opcional em memória: Para cenários em que você precisa dos bytes da imagem diretamente (por exemplo, enviando pela rede), converta a primeira página para um ByteArrayOutputStream.

    ImageConvertOptions memOptions = new ImageConvertOptions();
    memOptions.setFormat(ImageSaveOptions.ImageFormat.JPEG);
    memOptions.setPageNumber(0);
    ByteArrayOutputStream memoryStream = new ByteArrayOutputStream();
    converter.convert(memoryStream, memOptions);
    

Para mais detalhes sobre a classe Converter e seus métodos, veja a referência oficial da API.

Exemplo completo em funcionamento para converter Onenote em imagem em Java - Processamento paralelo de páginas

O código a seguir mostra uma implementação completa de como converter OneNote em imagem em Java usando 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();
            }
        }
    }
}

Note: Este exemplo de código demonstra a funcionalidade principal. Antes de usá‑lo em seu projeto, certifique‑se de atualizar os caminhos dos arquivos (sample.one, output_page_%d.png, etc.) para corresponder às suas localizações reais, verifique se todas as dependências necessárias estão corretamente instaladas e teste minuciosamente em seu ambiente de desenvolvimento. Se encontrar algum problema, consulte a documentação oficial ou entre em contato com a equipe de suporte para obter ajuda.

Instalando e Configurando Conholdate.Total for Java

Adicione o repositório Maven da Conholdate e a dependência SDK ao seu 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>

Baixe o pacote binário mais recente na página de download. O SDK requer Java 8 ou superior e funciona em qualquer JVM padrão. Para uso em produção, obtenha uma licença na página de preços e ative‑a com uma chave temporária na página de licença temporária.

Conclusão

Seguindo este guia, você agora tem uma base sólida para converter OneNote em imagem em Java usando Conholdate.Total for Java. O exemplo demonstra saída PNG página‑por‑página, processamento paralelo para velocidade e uma opção em memória para integração flexível. Lembre‑se de configurar o ImageConvertOptions para corresponder ao formato de imagem e qualidade desejados e de manipular os recursos com blocos try‑with‑resources conforme mostrado. Para projetos comerciais, obtenha uma licença adequada através da página de preços e teste a conversão com arquivos OneNote reais para garantir que todo o conteúdo seja renderizado corretamente. A API extensa e a documentação do SDK tornam simples estender esta solução para processamento em lote ou serviços baseados na nuvem.

Perguntas Frequentes

  • Posso converter Onenote para imagem em Java sem instalar o Microsoft Office?
    Sim. O Conholdate.Total SDK realiza toda a renderização internamente, portanto não é necessária a instalação do Office no servidor.

  • Quais formatos de imagem a conversão suporta?
    Você pode exportar para PNG, JPEG, BMP, GIF, e TIFF definindo a propriedade ImageSaveOptions.ImageFormat.

  • Como melhorar o desempenho para notebooks grandes?
    Use o pool de threads interno conforme demonstrado e prefira a conversão em memória quando precisar apenas dos bytes da imagem, evitando I/O de disco.

  • Onde posso encontrar mais exemplos e detalhes da API?
    A documentação oficial fornece guias extensos, e a referência da API lista todas as classes e métodos.

Leia Mais