将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 执行相同的转换。
- 获取访问令牌
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)。较低的数值可在降低视觉保真度的情况下减小文件大小。
- 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 会对输入进行流式处理,因此内存使用保持在低水平。不过,极大的文件可能受到服务限制;请查阅官方文档以获取确切阈值。