开发人员经常需要将大型 PDF 文件拆分为更小、更易管理的部分。使用 GroupDocs.Merger Cloud SDK for Node.JS,将 PDF 拆分为多个部分变得非常简单,因为云服务负责繁重的工作,而您只需专注于应用程序逻辑。本指南提供了完整的工作示例,展示了如何通过 cURL 执行相同的任务,并解释了可让您微调拆分操作的配置选项。
在 Node.JS 中将 PDF 拆分为多个 PDF - 完整代码示例
本示例演示如何使用 GroupDocs.Merger Cloud SDK for Node.JS 将 PDF 拆分为多个 PDF 文件。
const fs = require('fs');
const path = require('path');
const GroupDocsMergerCloud = require('@groupdocs/merger-cloud');
// ---------- Set up API credentials ----------
const client = new GroupDocsMergerCloud.ApiClient();
client.appSid = 'YOUR_APP_SID';
client.appKey = 'YOUR_APP_KEY';
// ---------- Initialize API instances ----------
const mergerApi = new GroupDocsMergerCloud.MergerApi(client);
const storageApi = new GroupDocsMergerCloud.StorageApi(client);
// ---------- Helper to upload a local file to cloud storage ----------
async function uploadFile(localPath, cloudPath) {
const fileData = fs.readFileSync(localPath);
const uploadRequest = new GroupDocsMergerCloud.UploadFileRequest({
path: cloudPath,
file: fileData
});
await storageApi.uploadFile(uploadRequest);
}
// ---------- Helper to download a cloud file to local storage ----------
async function downloadFile(cloudPath, localPath) {
const downloadRequest = new GroupDocsMergerCloud.DownloadFileRequest({ path: cloudPath });
const response = await storageApi.downloadFile(downloadRequest);
fs.writeFileSync(localPath, response);
}
// ---------- Main execution ----------
(async () => {
try {
// 1. Upload source PDF to cloud storage
const localInputPdf = path.resolve(__dirname, 'input.pdf'); // local source PDF
const cloudInputPdf = 'input/input.pdf'; // cloud path
await uploadFile(localInputPdf, cloudInputPdf);
console.log('Uploaded PDF to cloud storage.');
// 2. Configure split options (example: split into two parts: pages 1‑2 and 3‑5)
const splitOptions = new GroupDocsMergerCloud.SplitOptions({
pages: ['1-2', '3-5'] // page ranges to split
});
// 3. Build split request
const splitRequest = new GroupDocsMergerCloud.SplitDocumentRequest({
fileInfo: new GroupDocsMergerCloud.FileInfo({ filePath: cloudInputPdf }),
options: splitOptions
});
// 4. Execute split operation
const splitResult = await mergerApi.splitDocument(splitRequest);
console.log(`Split operation completed. ${splitResult.length} parts generated.`);
// 5. Download each split part and save locally
for (let i = 0; i < splitResult.length; i++) {
const partInfo = splitResult[i];
const localOutputPath = path.resolve(__dirname, `output_part_${i + 1}.pdf`);
await downloadFile(partInfo.path, localOutputPath);
console.log(`Saved split part ${i + 1} to ${localOutputPath}`);
}
// 6. (Optional) Clean up cloud storage – delete uploaded source file
const deleteRequest = new GroupDocsMergerCloud.DeleteFileRequest({ path: cloudInputPdf });
await storageApi.deleteFile(deleteRequest);
console.log('Cleaned up source file from cloud storage.');
} catch (error) {
console.error('Error during PDF split process:', error);
}
})();
注意: 此代码示例演示了核心功能。在将其用于项目之前,请确保更新所有文件路径和配置值以匹配实际环境,验证已正确安装所有必需的依赖项,并在开发环境中进行彻底测试。如果遇到任何问题,请参阅官方文档或联系支持团队获取帮助。
使用 REST API 和 cURL 拆分 PDF
如果您更喜欢纯 REST 方法,可以使用 cURL 命令执行相同的拆分操作。下面的步骤展示了如何获取访问令牌、上传源 PDF、执行拆分以及下载每个部分。
# 1. Get an access token (replace YOUR_CLIENT_ID and YOUR_CLIENT_SECRET)
curl -X POST "https://api.groupdocs.cloud/v2.0/oauth2/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
# 2. Upload the source PDF (replace YOUR_ACCESS_TOKEN and adjust paths)
curl -X PUT "https://api.groupdocs.cloud/v2.0/storage/file/input.pdf" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/pdf" \
--data-binary @./input.pdf
# 3. Execute the split operation (pages 1-2 and 3-5)
curl -X POST "https://api.groupdocs.cloud/v2.0/merger/split" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fileInfo": { "filePath": "input.pdf" },
"options": { "pages": ["1-2","3-5"] }
}'
# 4. Download each generated part (example for part 1)
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/output_part_1.pdf" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o ./output_part_1.pdf
要查看完整的端点和参数列表,请参阅官方 API 文档。
在 Node.JS 中拆分 PDF 为多个 PDF 的工作原理
了解流程有助于您将代码适配到更复杂的场景中。
- 初始化 API 客户端 -
new GroupDocsMergerCloud.ApiClient()创建一个保存您的 App SID 和 App Key 的客户端。
const client = new GroupDocsMergerCloud.ApiClient();
client.appSid = 'YOUR_APP_SID';
client.appKey = 'YOUR_APP_KEY';
- 上传源文件 - 辅助函数
uploadFile读取本地 PDF 并使用storageApi.uploadFile将其发送到云存储。
await uploadFile(localInputPdf, cloudInputPdf);
- 配置拆分选项 -
new GroupDocsMergerCloud.SplitOptions({ pages: ['1-2', '3-5'] })告诉服务要提取哪些页面范围。
const splitOptions = new GroupDocsMergerCloud.SplitOptions({
pages: ['1-2', '3-5']
});
- 发送拆分请求 -
mergerApi.splitDocument(splitRequest)发送请求并返回一个包含每个生成部分信息的数组。
const splitResult = await mergerApi.splitDocument(splitRequest);
- 下载结果 - 循环遍历
splitResult,为每个部分调用downloadFile并将其保存到本地。
for (let i = 0; i < splitResult.length; i++) {
const partInfo = splitResult[i];
await downloadFile(partInfo.path, localOutputPath);
}
有关每个类和方法的更详细信息,请参阅 API 参考。
前置条件和设置
在开始之前,请确保您具备以下条件:
- 已安装 Node.js 14 或更高版本。
- 拥有有效 App SID 和 App Key 的 GroupDocs Cloud 账户。
- 能够访问互联网以进行 API 调用。
通过 npm 安装 SDK 并下载最新的包:
npm install groupdocs-merger-cloud
您也可以直接从下载页面获取二进制文件。
微调拆分选项
SplitOptions 对象提供了多个可调属性:
- pages - 页面范围数组(例如
['1-2','3-5'])。这是示例中使用的核心设置。 - outputPath - 可选文件夹,用于在云存储中存放拆分后的文件。
- preserveMetadata - 设置为
true时,原始文档的元数据会复制到每个部分。请参阅 API 参考 获取更多选项。
调整这些值可以让您控制每个生成的 PDF 的大小、命名和元数据。
结论
在 Node.JS 中将 PDF 拆分为多个 PDF 变得简单,只需使用 GroupDocs.Merger Cloud SDK for Node.JS。SDK 负责文件上传、页面范围选择和结果检索,让您专注于将输出集成到工作流中。请记住保护您的 App SID 和 App Key,并考虑在生产部署中使用商业许可证。定价详情可在产品页面查看,您也可以从临时许可证页面获取临时许可证。通过本指南中的代码、cURL 示例和配置技巧,您已准备好在 Node.JS 应用程序中实现强大的 PDF 拆分功能。
常见问题
如何在 Node.JS 中使用自定义页面范围将 PDF 拆分为多个 PDF?
使用SplitOptions的pages属性来定义所需的任何范围,例如['1-3','4-6']。SDK 将为每个范围生成一个单独的 PDF。我可以在不将 PDF 永久存储在云存储中的情况下拆分它吗?
是的。上传源文件并完成拆分后,您可以使用storageApi.deleteFile删除原始文件,如示例所示。我需要付费许可证才能在生产环境中使用 split 功能吗?
生产环境使用需要商业许可证。访问产品页面了解定价,并从临时许可证页面获取临时许可证进行评估。
