将JPG图像以编程方式转换为PDF文档是 PHP 开发人员在构建报告或归档功能时的常见需求。Aspose.Words Cloud SDK for PHP 使您只需几行代码即可在 PHP 中将 JPG 转换为 PDF。在本指南中,您将看到一步一步的演练、完整的工作示例以及 REST API 的 cURL 命令。您还将学习如何微调 DPI 和图像质量,以获得最佳效果。

设置 Aspose.Words Cloud SDK for PHP

在开始之前,请确保您已拥有:

  • PHP 7.4 或更高
  • 已安装 Composer
  • 拥有 Client Id 和 Client Secret 的 Aspose Cloud 账户
  • 对 https://api.aspose.cloud 的网络访问

通过 Composer 安装 SDK:

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 实例并开始转换。

PHP 中的 JPG 转 PDF 转换:逐步演练

步骤 1:加载源文档

将 JPG 文件作为流打开,以便高效处理大图像。

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

步骤 2:配置转换选项

设置所需的 DPI 和图像质量。这些设置直接影响输出 PDF 的大小和清晰度,在使用 PHP 将 JPG 转换为 PDF 时非常重要。

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

PHP 中将 JPG 转换为 PDF 的完整工作示例

下面的示例演示了从头到尾的完整实现。

<?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 reference 获取完整列表。

设置 DPI 和质量的示例(已在演练中展示):

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

关键要点

使用 Aspose.Words Cloud SDK for PHP,您可以轻松在 PHP 中将 JPG 转换为 PDF,而无需处理底层图像处理。SDK 负责流式传输、DPI 和图像质量,让您专注于业务逻辑。请确保保护您的 Client Id 和 Client Secret,并在购买正式许可证之前考虑使用临时许可证进行评估。产品页面提供了定价详情,您可以从临时许可证页面获取临时许可证。借助提供的代码和 cURL 示例,您即可将 JPG 转 PDF 转换集成到任何 Web 或桌面 PHP 应用程序中。

您可能有的疑问

  • 在 PHP 中将 JPG 转换为 PDF 的最简方法是什么?
    完整示例中显示的一行代码使用 ConvertDocumentRequest,并将目标格式设置为 "pdf"。此单次调用即可完成整个转换。

  • 我可以在单个请求中转换多个 JPG 文件吗?
    API 每个请求仅处理一个源文件。若要处理批量文件,请遍历文件列表并为每张图像单独调用转换。

  • 如何控制输出 PDF 的大小?
    调整 ConvertOptions 中的 DpiX、DpiY 和 ImageQuality。较低的 DPI 和质量会减小文件大小,而较高的值则提升视觉保真度。

  • 转换 JPG 图像的大小是否有限制?
    SDK 会对输入进行流式处理,因此内存使用保持在低水平。不过,极大的文件可能受到服务限制;请查阅官方文档以获取确切阈值。

进一步阅读