تبدیل تصاویر 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 Download.

اکنون 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');

مرحله ۲: پیکربندی گزینه‌های تبدیل

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

مرحله ۳: ایجاد درخواست تبدیل

درخواست شی را با جریان ورودی، فرمت هدف و گزینه‌ها آماده کنید.

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). مقادیر کمتر حجم فایل را کاهش می‌دهند اما با هزینهٔ وفاداری بصری.
  • Additional options - کلاس ConvertOptions همچنین از setPageSize، setPageOrientation و setColorMode پشتیبانی می‌کند. برای فهرست کامل به مرجع API مراجعه کنید.

مثال تنظیم 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 ورودی را به صورت استریم می‌کند، بنابراین مصرف حافظه کم می‌ماند. با این حال، فایل‌های بسیار بزرگ ممکن است تحت محدودیت‌های سرویس قرار گیرند؛ برای آستانه‌های دقیق به مستندات رسمی مراجعه کنید.

مطالعه بیشتر