Программное преобразование изображений 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.
- Получить токен доступа
curl -X POST "https://api.aspose.cloud/connect/token" \
-d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
- Загрузите исходный 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"
- Выполнить конвертацию
curl -X GET "https://api.aspose.cloud/v4.0/words/sample.jpg?format=pdf" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o result.pdf
- Скачайте полученный 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 потоково обрабатывает ввод, поэтому использование памяти остаётся низким. Однако очень большие файлы могут подпадать под ограничения сервиса; обратитесь к официальной документации для уточнения пороговых значений.