Программное преобразование изображений JPG в документы PDF часто требуется разработчикам PHP, создающим функции отчетности или архивирования. Aspose.Words Cloud SDK for PHP позволяет конвертировать JPG в PDF в PHP всего несколькими строками кода. В этом руководстве вы увидите пошаговое руководство, полностью рабочий пример и команды cURL для REST API. Вы также узнаете, как точно настроить DPI и качество изображения для оптимальных результатов.

Настройка Aspose.Words Cloud SDK для PHP

Прежде чем начать, убедитесь, что у вас есть:

  • PHP 7.4 или выше
  • Установленный Composer
  • Учётная запись Aspose Cloud с Client Id и Client Secret
  • Сетевой доступ к https://api.aspose.cloud

Установите SDK через Composer:

composer require aspose-cloud/aspose-words-cloud

Скачайте последнюю версию пакета со страницы официального релиза: Aspose.Words Cloud SDK for PHP Скачать.

Теперь настройте SDK с вашими учетными данными:

require __DIR__ . '/vendor/autoload.php';

use Aspose\Words\Configuration;

$config = new Configuration();
$config->setClientId('YOUR_CLIENT_ID');
$config->setClientSecret('YOUR_CLIENT_SECRET');
$config->setHost('https://api.aspose.cloud');

После того как конфигурация готова, вы можете создать экземпляр WordsApi и начать конвертацию.

Преобразование JPG в PDF в PHP: пошаговое руководство

Шаг 1: Загрузите исходный документ

Откройте файл JPG как поток, чтобы большие изображения обрабатывались эффективно.

$inputJpgPath  = __DIR__ . '/sample.jpg';   // source JPG
$jpgStream = fopen($inputJpgPath, 'rb');

Шаг 2: Настройка параметров конвертации

Установите желаемое DPI и качество изображения. Эти настройки напрямую влияют на размер и чёткость выходного PDF, что важно при конвертации JPG в PDF в PHP.

use Aspose\Words\Model\ConvertOptions;

$convertOptions = new ConvertOptions();
$convertOptions->setDpiX(300);   // horizontal DPI
$convertOptions->setDpiY(300);   // vertical DPI
$convertOptions->setImageQuality(80); // 0‑100

Шаг 3: Создать запрос на преобразование

Подготовьте объект запроса с входным потоком, целевым форматом и параметрами.

use Aspose\Words\Model\Requests\ConvertDocumentRequest;

$request = new ConvertDocumentRequest(
    $jpgStream,          // Input file stream
    'pdf',               // Target format
    null,                // outPath – null to receive binary response
    null,                // storage – default
    null,                // folder – default
    $convertOptions      // conversion options
);

Шаг 4: Выполнить конвертацию и сохранить PDF

Вызовите API, получите двоичные данные PDF и запишите их в файл.

use Aspose\Words\WordsApi;

$wordsApi = new WordsApi($config);

try {
    $pdfBinary = $wordsApi->convertDocument($request);
    $outputPdfPath = __DIR__ . '/result.pdf';
    $pdfHandle = fopen($outputPdfPath, 'wb');
    fwrite($pdfHandle, $pdfBinary);
    fclose($pdfHandle);
    echo "Conversion successful: {$outputPdfPath}\n";
} catch (Exception $e) {
    echo 'Error during conversion: ', $e->getMessage(), "\n";
}

Полный рабочий пример конвертации JPG в PDF на PHP

Пример ниже демонстрирует полную реализацию от начала до конца.

<?php
require __DIR__ . '/vendor/autoload.php';

use Aspose\Words\Configuration;
use Aspose\Words\WordsApi;
use Aspose\Words\Model\ConvertOptions;
use Aspose\Words\Model\Requests\ConvertDocumentRequest;

$clientId = 'YOUR_CLIENT_ID';
$clientSecret = 'YOUR_CLIENT_SECRET';

$config = new Configuration();
$config->setClientId($clientId);
$config->setClientSecret($clientSecret);
$config->setHost('https://api.aspose.cloud');

$wordsApi = new WordsApi($config);

$inputJpgPath  = __DIR__ . '/sample.jpg';   // source JPG
$outputPdfPath = __DIR__ . '/result.pdf';   // destination PDF

// Open JPG as a stream to avoid loading whole file into memory for large images
$jpgStream = fopen($inputJpgPath, 'rb');

$convertOptions = new ConvertOptions();
$convertOptions->setDpiX(300);   // horizontal DPI
$convertOptions->setDpiY(300);   // vertical DPI
$convertOptions->setImageQuality(80); // optional, 0‑100

$request = new ConvertDocumentRequest(
    $jpgStream,          // Input file stream
    'pdf',               // Target format
    null,                // outPath – null to receive binary response
    null,                // storage – default
    null,                // folder – default
    $convertOptions      // conversion options
);

try {
    // API returns binary PDF data
    $pdfBinary = $wordsApi->convertDocument($request);
    // Write binary data to file efficiently
    $pdfHandle = fopen($outputPdfPath, 'wb');
    fwrite($pdfHandle, $pdfBinary);
    fclose($pdfHandle);
    echo "Conversion successful: {$outputPdfPath}\n";
} catch (Exception $e) {
    echo 'Error during conversion: ', $e->getMessage(), "\n";
}

// Cleanup
if (is_resource($jpgStream)) {
    fclose($jpgStream);
}

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

Использование cURL для преобразования JPG‑изображений в PDF‑документы

Если вы предпочитаете прямой вызов REST, то то же преобразование можно выполнить с помощью cURL.

  1. Получить токен доступа
curl -X POST "https://api.aspose.cloud/connect/token" \
     -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
  1. Загрузите исходный JPG в хранилище
curl -X PUT "https://api.aspose.cloud/v4.0/words/storage/file/sample.jpg" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     --data-binary "@sample.jpg"
  1. Выполнить конвертацию
curl -X GET "https://api.aspose.cloud/v4.0/words/sample.jpg?format=pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o result.pdf
  1. Скачайте полученный PDF (если не использовали -o выше)
curl -X GET "https://api.aspose.cloud/v4.0/words/result.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o result.pdf

Эти команды иллюстрируют тот же рабочий процесс без написания какого-либо кода PHP. Для получения более подробной информации см. официальную документацию API.

Точная настройка параметров конвертации для оптимального вывода PDF

SDK предлагает несколько вариантов управления внешним видом и размером сгенерированного PDF.

  • DPI (точек на дюйм) – Более высокий DPI (например, 300) обеспечивает более резкий вывод, подходящий для печати. Устанавливается с помощью setDpiX и setDpiY.
  • ImageQuality – Управляет уровнем сжатия JPEG (0‑100). Более низкие значения уменьшают размер файла за счёт визуального качества.
  • Дополнительные параметры – Класс ConvertOptions также поддерживает setPageSize, setPageOrientation и setColorMode. Обратитесь к API reference для полного списка.

Пример установки DPI и качества (уже показан в руководстве):

$convertOptions = new ConvertOptions();
$convertOptions->setDpiX(300);
$convertOptions->setDpiY(300);
$convertOptions->setImageQuality(80);

Ключевые выводы

Используя Aspose.Words Cloud SDK for PHP, вы можете легко преобразовать JPG в PDF в PHP, не занимаясь низкоуровневой обработкой изображений. SDK управляет потоковой передачей, DPI и качеством изображения, позволяя сосредоточиться на бизнес‑логике. Не забудьте защитить ваш Client Id и Client Secret, а также рассмотреть возможность получения временной лицензии для оценки перед покупкой полной лицензии. Информация о ценах доступна на странице продукта, а временную лицензию можно получить на странице временной лицензии. С предоставленным кодом и примерами cURL вы готовы интегрировать преобразование JPG в PDF в любое веб‑ или настольное PHP‑приложение.

Вопросы, которые у вас могут возникнуть

  • Какой самый простой способ конвертировать JPG в PDF в PHP?
    Однострочник, показанный в полном примере, использует ConvertDocumentRequest с целевым форматом, установленным в "pdf". Этот один вызов выполняет полное преобразование.

  • Могу ли я конвертировать несколько JPG‑файлов в одном запросе?
    API обрабатывает один исходный файл за запрос. Чтобы работать с пакетами, пройдите по списку файлов и вызовите конвертацию для каждого изображения.

  • Как я могу контролировать размер выходного PDF?
    Настройте DpiX, DpiY и ImageQuality в ConvertOptions. Более низкие DPI и качество уменьшают размер файла, а более высокие значения улучшают визуальную точность.

  • Есть ли ограничение на размер JPG‑изображения, которое я могу конвертировать?
    SDK потоково обрабатывает ввод, поэтому использование памяти остаётся низким. Однако очень большие файлы могут подпадать под ограничения сервиса; обратитесь к официальной документации для уточнения пороговых значений.

Further Reading