Конвертация файлов DOCX в PDF часто требуется при построении документооборотов, которым нужен универсальный, готовый к печати формат. GroupDocs.Conversion Cloud SDK for Java предлагает надёжный API, который выполняет эту задачу без необходимости использования Microsoft Office. В этом руководстве вы увидите, как настроить библиотеку, выполнить многопоточную конвертацию, эффективно работать с потоками и применить лучшие практики производительности. К концу вы получите готовый пример кода, который можно интегрировать в любой Java‑бэкенд.

Шаги по выполнению преобразования DOCX в PDF в Java

  1. Инициализировать клиент Conversion API – Создайте экземпляр ConversionApi, используя ваш client ID и secret. Этот объект будет использоваться для всех последующих вызовов.

    ConversionApi api = new ConversionApi("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");
    
  2. Загрузить исходный DOCX – Используйте UploadApi для отправки файла DOCX в хранилище GroupDocs. API возвращает идентификатор файла, который вы будете использовать позже.

    UploadApi upload = new UploadApi(api);
    String fileId = upload.uploadFile("sample.docx");
    
  3. Настроить параметры конвертации – Включите многопоточность, установив parallelism, и выберите вывод на основе потока, чтобы избежать временных файлов.

    ConvertOptions options = new ConvertOptions();
    options.setParallelism(4);               // Use 4 threads
    options.setOutputFormat("pdf");
    options.setUseStream(true);
    
  4. Выполнить конвертацию – Вызовите метод convert, передав идентификатор файла и параметры. Результат возвращается как InputStream.

    InputStream pdfStream = api.convert(fileId, options);
    
  5. Сохранить PDF – Запишите InputStream в нужное место и закройте ресурсы.

    Files.copy(pdfStream, Paths.get("output.pdf"), StandardCopyOption.REPLACE_EXISTING);
    pdfStream.close();
    

Пример полного кода конвертации DOCX в PDF на Java

В следующем примере все шаги объединены в одну готовую к компиляции программу. Он демонстрирует многопоточное преобразование, работу с потоками и правильную очистку ресурсов.

import com.groupdocs.conversion.cloud.api.ConversionApi;
import com.groupdocs.conversion.cloud.api.UploadApi;
import com.groupdocs.conversion.cloud.model.ConvertOptions;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

public class DocxToPdfDemo {
    public static void main(String[] args) {
        // Initialize the API client
        ConversionApi conversionApi = new ConversionApi("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");
        UploadApi uploadApi = new UploadApi(conversionApi);

try {
            // 1. Upload DOCX file
            String fileId = uploadApi.uploadFile("sample.docx");

// 2. Set conversion options (multithreading + stream output)
            ConvertOptions options = new ConvertOptions();
            options.setParallelism(4);          // Number of threads
            options.setOutputFormat("pdf");
            options.setUseStream(true);

// 3. Perform conversion
            InputStream pdfStream = conversionApi.convert(fileId, options);

// 4. Save the resulting PDF
            Files.copy(pdfStream, Paths.get("sample_converted.pdf"), StandardCopyOption.REPLACE_EXISTING);
            pdfStream.close();

System.out.println("Conversion completed successfully.");
        } catch (Exception e) {
            System.err.println("Error during conversion: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

Примечание: Этот пример кода демонстрирует базовый функционал. Прежде чем использовать его в вашем проекте, убедитесь, что обновили пути к файлам (sample.docx, sample_converted.pdf), проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если вы столкнётесь с какими‑либо проблемами, обратитесь к официальной документации или свяжитесь с командой поддержки для получения помощи.

Конвертация DOCX в PDF через REST API с использованием cURL

Вы можете выполнить ту же конверсию, используя REST‑конечные точки, предоставленные облачным сервисом. Ниже приведены необходимые команды cURL.

  1. Получите токен доступа – аутентифицируйтесь с помощью ваших учетных данных клиента.
curl -X POST "https://api.groupdocs.cloud/v2.0/oauth2/token" \
     -H "Content-Type: application/json" \
     -d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_CLIENT_SECRET"}'
  1. Загрузить файл DOCX - Используйте токен из предыдущего шага.
curl -X POST "https://api.groupdocs.cloud/v2.0/storage/upload" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -F "file=@sample.docx"
  1. Начать преобразование - Запросить вывод в PDF с включённым многопоточным режимом.
curl -X POST "https://api.groupdocs.cloud/v2.0/conversion/convert" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "inputFilePath":"sample.docx",
           "outputFormat":"pdf",
           "options":{"parallelism":4}
         }'
  1. Скачать преобразованный PDF - Замените output_file_id на идентификатор, возвращённый в предыдущем ответе.
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/download/output_file_id.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o converted.pdf

Для полного списка конечных точек и параметров см. официальную документацию API.

Установка и настройка в Java

  1. Add the Maven dependency - Include the SDK in your pom.xml.

    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-conversion-cloud</artifactId>
        <version>2.0.0</version>
    </dependency>
    
  2. Install the library - Run the Maven command to fetch the package.

    mvn install com.groupdocs:groupdocs-conversion-cloud
    
  3. Download the latest release - You can also obtain the JAR directly from the download page.

  4. Apply a temporary license for testing - Register at the temporary license page and set the license file in your code if needed.

  5. Configure your credentials - Store client_id and client_secret securely, for example in environment variables.

Руководство по конвертации DOCX в PDF на Java с GroupDocs.Conversion

GroupDocs.Conversion Cloud SDK абстрагирует сложности преобразования форматов, позволяя сосредоточиться на бизнес‑логике. API поддерживает широкий спектр исходных и целевых форматов, автоматическое управление шрифтами и высококачественный рендеринг. Поскольку сервис работает в облаке, вы избегаете накладных расходов на установку компонентов Office на ваших серверах.

GroupDocs.Conversion Функции, важные для этой задачи

  • Обработка на основе потоков - Работает с InputStream/OutputStream, чтобы минимизировать ввод‑вывод на диск.
  • Многопоточное преобразование - Параметр parallelism распределяет рендеринг страниц по ядрам процессора, значительно сокращая время конвертации больших файлов DOCX.
  • Сохранение макета и изображений - Все встроенные изображения, таблицы и стили сохраняются в полученном PDF.
  • Масштабируемая облачная инфраструктура - Обрабатывает высокие нагрузки без дополнительного оборудования.

Работа с потоками и параметрами вывода

При работе с большими документами используйте потоки, чтобы снизить потребление памяти:

InputStream input = new FileInputStream("large.docx");
ConvertOptions opts = new ConvertOptions();
opts.setUseStream(true);          // Enable streaming
opts.setParallelism(8);           // Increase thread count for big files
InputStream pdf = conversionApi.convert(input, opts);

SDK автоматически буферизует данные, но при необходимости более точного контроля вы можете настроить размер буфера с помощью параметра bufferSize.

Оптимизация производительности преобразования DOCX в PDF

  • Настройте parallelism в зависимости от количества доступных ядер CPU; значение 4‑8 хорошо работает на большинстве серверов.
  • Повторно используйте экземпляр ConversionApi при нескольких конверсиях, чтобы избежать повторных расходов на аутентификацию.
  • Отдавайте предпочтение потоковому выводу вместо временных файлов, чтобы уменьшить задержку диска.
  • Следите за квотами API - облачный сервис ограничивает количество запросов; объединяйте несколько файлов в пакет, когда это возможно.

Лучшие практики конвертации DOCX в PDF на Java

  • Проверьте входные файлы перед загрузкой, чтобы избежать ошибок с повреждёнными DOCX.
  • Включите встраивание шрифтов, чтобы гарантировать одинаковый рендеринг на клиентских машинах.
  • Записывайте метки времени конвертации и количество потоков для устранения регрессий производительности.
  • Используйте временную лицензию только в процессе разработки; получите производственную лицензию перед выпуском.

Заключение

В этом руководстве показано, как выполнить конвертацию DOCX в PDF в Java с использованием GroupDocs.Conversion Cloud SDK for Java. Вы узнали, как настроить многопоточность, работать с потоками и оптимизировать производительность для больших документов. Не забудьте обеспечить наличие правильной лицензии для использования в продакшене; детали ценообразования доступны на странице продукта, а временную лицензию можно получить со страницы временной лицензии. С предоставленным кодом и рекомендациями по лучшим практикам вы теперь можете добавить надёжную конвертацию документов в любое Java‑приложение.

Часто задаваемые вопросы

Как обрабатывать большие файлы DOCX без исчерпания памяти?
Используйте конвертацию на основе потоков (setUseStream(true)) и включите многопоточность. Это сохраняет в памяти только небольшие фрагменты и распределяет нагрузку по ядрам процессора. См. документацию для получения более подробной информации.

Можно ли конвертировать файлы DOCX, содержащие пользовательские шрифты?
Да. SDK автоматически встраивает недостающие шрифты в PDF. Вы также можете предоставить дополнительные файлы шрифтов через параметр fontsPath, если это необходимо.

Могу ли я конвертировать несколько файлов DOCX параллельно?
Абсолютно. Создайте отдельные задачи конвертации для каждого файла и запустите их в параллельных потоках или с помощью сервиса‑исполнителя. Облачный сервис обрабатывает каждый запрос независимо.

Где я могу найти больше примеров проектов?
Официальный репозиторий GitHub содержит дополнительные примеры: https://github.com/groupdocs-conversion-cloud/groupdocs-conversion-cloud-java. Репозиторий также включает скрипты сборки Maven и конфигурации CI.

Читать далее