Việc chuyển đổi ảnh JPG sang tài liệu PDF một cách lập trình là nhu cầu thường gặp đối với các nhà phát triển PHP xây dựng các tính năng báo cáo hoặc lưu trữ. Aspose.Words Cloud SDK for PHP cho phép bạn chuyển đổi JPG sang PDF trong PHP chỉ với vài dòng mã. Trong hướng dẫn này, bạn sẽ thấy một quy trình từng bước, một ví dụ hoàn chỉnh hoạt động, và các lệnh cURL cho REST API. Bạn cũng sẽ học cách tinh chỉnh DPI và chất lượng hình ảnh để đạt kết quả tối ưu.

Cài đặt Aspose.Words Cloud SDK cho PHP

Trước khi bắt đầu, hãy chắc chắn rằng bạn đã có:

  • PHP 7.4 hoặc cao hơn
  • Composer đã cài đặt
  • Một tài khoản Aspose Cloud với Client Id và Client Secret
  • Truy cập mạng tới https://api.aspose.cloud

Cài đặt SDK qua Composer:

composer require aspose-cloud/aspose-words-cloud

Tải xuống gói mới nhất từ trang phát hành chính thức: Aspose.Words Cloud SDK for PHP Tải xuống.

Bây giờ hãy cấu hình SDK với thông tin xác thực của bạn:

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');

Khi cấu hình đã sẵn sàng, bạn có thể tạo một thể hiện WordsApi và bắt đầu chuyển đổi.

Chuyển đổi JPG sang PDF trong PHP: Hướng dẫn từng bước

Bước 1: Tải tài liệu nguồn

Mở tệp JPG dưới dạng luồng để xử lý các hình ảnh lớn một cách hiệu quả.

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

Bước 2: Cấu hình các tùy chọn chuyển đổi

Đặt DPI và chất lượng hình ảnh mong muốn. Các cài đặt này ảnh hưởng trực tiếp đến kích thước và độ rõ của PDF đầu ra, điều này quan trọng khi bạn chuyển JPG sang PDF trong PHP.

use Aspose\Words\Model\ConvertOptions;

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

Bước 3: Tạo yêu cầu chuyển đổi

Chuẩn bị đối tượng yêu cầu với luồng đầu vào, định dạng mục tiêu và các tùy chọn.

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
);

Bước 4: Thực hiện chuyển đổi và lưu PDF

Gọi API, nhận dữ liệu PDF nhị phân và ghi nó vào tệp.

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";
}

Ví dụ Hoạt Động Đầy Đủ cho Việc Chuyển Đổi JPG sang PDF trong PHP

Ví dụ dưới đây trình bày việc triển khai hoàn chỉnh từ đầu đến cuối.

<?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);
}

Lưu ý: Ví dụ mã này minh họa chức năng cốt lõi. Trước khi sử dụng trong dự án của bạn, hãy chắc chắn cập nhật mọi đường dẫn tệp và giá trị cấu hình để phù hợp với môi trường thực tế của bạn, xác minh rằng tất cả các phụ thuộc cần thiết đã được cài đặt đúng cách, và kiểm tra kỹ lưỡng trong môi trường phát triển. Nếu bạn gặp bất kỳ vấn đề nào, vui lòng tham khảo tài liệu chính thức hoặc liên hệ với đội hỗ trợ để được trợ giúp.

Sử dụng cURL để Chuyển đổi Hình ảnh JPG sang Tài liệu PDF

Nếu bạn muốn thực hiện một cuộc gọi REST trực tiếp, cùng một chuyển đổi có thể được thực hiện bằng cURL.

  1. Lấy token truy cập
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. Tải lên JPG nguồn lên bộ nhớ
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. Thực hiện chuyển đổi
   curl -X GET "https://api.aspose.cloud/v4.0/words/sample.jpg?format=pdf" \
        -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
        -o result.pdf
  1. Tải xuống tệp PDF kết quả (nếu không sử dụng -o ở trên)
curl -X GET "https://api.aspose.cloud/v4.0/words/result.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o result.pdf

Các lệnh này minh họa cùng một quy trình làm việc mà không cần viết bất kỳ mã PHP nào. Để biết thêm chi tiết, xem tài liệu API chính thức.

Tinh chỉnh cài đặt chuyển đổi để đạt đầu ra PDF tối ưu

SDK cung cấp một số tùy chọn để kiểm soát giao diện và kích thước của PDF được tạo.

  • DPI (Dots Per Inch) - DPI cao hơn (ví dụ, 300) cho ra đầu ra sắc nét hơn, phù hợp cho việc in. Đặt bằng setDpiX và setDpiY.
  • ImageQuality - Điều khiển mức độ nén JPEG (0‑100). Giá trị thấp hơn giảm kích thước tệp nhưng ảnh hưởng đến độ trung thực hình ảnh.
  • Additional options - Lớp ConvertOptions cũng hỗ trợ setPageSize, setPageOrientation và setColorMode. Tham khảo API reference để biết danh sách đầy đủ.

Ví dụ về việc thiết lập DPI và chất lượng (đã được trình bày trong hướng dẫn):

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

Những điểm chính

Sử dụng Aspose.Words Cloud SDK for PHP, bạn có thể dễ dàng chuyển đổi JPG sang PDF trong PHP mà không cần xử lý ảnh ở mức độ thấp. SDK xử lý việc stream, DPI và chất lượng hình ảnh, cho phép bạn tập trung vào logic nghiệp vụ. Hãy nhớ bảo mật Client Id và Client Secret của bạn, và cân nhắc sử dụng giấy phép tạm thời để đánh giá trước khi mua giấy phép đầy đủ. Chi tiết về giá cả có trên trang sản phẩm, và giấy phép tạm thời có thể được lấy từ trang giấy phép tạm thời. Với mã và các ví dụ cURL được cung cấp, bạn đã sẵn sàng tích hợp chuyển đổi JPG sang PDF vào bất kỳ ứng dụng PHP web hoặc desktop nào.

Các câu hỏi bạn có thể có

  • Cách đơn giản nhất để chuyển JPG sang PDF trong PHP là gì?
    Dòng lệnh một dòng được hiển thị trong ví dụ đầy đủ sử dụng ConvertDocumentRequest với định dạng đích được đặt là "pdf". Lệnh duy nhất này thực hiện toàn bộ quá trình chuyển đổi.

  • Tôi có thể chuyển đổi nhiều tệp JPG trong một yêu cầu duy nhất không?
    API xử lý một tệp nguồn cho mỗi yêu cầu. Để xử lý các lô, hãy lặp qua danh sách tệp của bạn và gọi chuyển đổi cho mỗi hình ảnh.

  • Làm thế nào để tôi kiểm soát kích thước PDF đầu ra?
    Điều chỉnh DpiX, DpiY và ImageQuality trong ConvertOptions. DPI và chất lượng thấp hơn sẽ giảm kích thước tệp, trong khi các giá trị cao hơn sẽ cải thiện độ trung thực hình ảnh.

  • Có giới hạn nào về kích thước của ảnh JPG mà tôi có thể chuyển đổi không?
    SDK truyền dữ liệu đầu vào theo luồng, vì vậy mức sử dụng bộ nhớ vẫn thấp. Tuy nhiên, các tệp cực lớn có thể bị giới hạn bởi các hạn chế dịch vụ; hãy tham khảo tài liệu chính thức để biết các ngưỡng chính xác.

Đọc thêm