在 Make 中合并文件夹中的多个 PDF 文件:Iterator、Array Aggregator 和 PDF4me 分步指南

您的 Dropbox 文件夹中有多个 PDF 文件,您希望它们自动合并成一个 PDF 文件。但问题是: PDF4me 合并多个 PDF 文件 期待一个 大批 文件数据,但 Dropbox 监视文件 返回文件元数据列表, 下载文件 一次只能返回一个文件。为了弥合这一差距,你需要 迭代器 和 数组聚合器迭代器逐个处理每个文件,数组聚合器将这些结果收集到合并所需的数组中。
本指南将详细介绍完整的“制造”场景,并重点关注…… 迭代器和数组聚合器的工作原理 以及如何将它们连接到 PDF4me Make 连接器。
你需要什么
- A 制作 帐户, 创建一个免费的Make帐户 如果你没有的话。
- PDF4me 集成: 添加 PDF4me on Make 并与您的 API密钥。 看 连接 PDF4me 以创建 如果需要的话。
- Dropbox将 Dropbox 连接到 Make。我们使用源文件夹(例如,
/pdf4metest/Merge/mergetest/)和一个输出文件夹(例如,/pdf4meoutput/)。
流程概览
这种情况有 6 个模块 按此顺序:
- Dropbox:监视文件监视文件夹中的新文件或更新的文件。输出一个 大批 文件元数据(路径、名称、大小)。
- Dropbox:下载文件下载每个文件。运行 在迭代器路由内部每个文件一次。
- 迭代器从监视文件中获取数组并进行处理 逐一之后所有连接的组件都会对每个文件运行一次。
- 数组聚合器收集每次迭代器循环的输出(下载的文件数据)并将其打包成一个 单阵列 已格式化为 PDF4me 合并格式。
- PDF4me:合并多个PDF文件:接收聚合数组,将所有 PDF 合并为一个文件,并输出合并后的文件。
- Dropbox:上传文件将合并后的 PDF 文件保存到输出文件夹。

理解迭代器和数组聚合器
配置之前,了解以下内容会有帮助。 为什么 这两个模块是必需的。
为什么需要迭代器?
Dropbox、Watch Files 返回一个 大批 文件对象(每个对象都有路径、名称、大小等)。 PDF4me,合并多个PDF 需要一个 文件内容数组 这是二进制数据,不是元数据。要获取内容,您必须 下载每个文件。 但 下载文件 作品 每次运行一个文件它需要一条单一路径。
这 迭代器 解决方法是:它从监视文件中获取数组, 将其拆分成各个部分对于每个项目,它都会运行其路由中的模块。 一次。 所以:
- 监视文件输出:
[file1, file2, file3] - 迭代器运行该路由 3次:文件1一次,文件2一次,文件3一次
- 下载文件运行 3次每次都使用迭代器中当前文件的路径
为什么需要数组聚合器?
迭代器运行后,您将拥有 多次独立执行 下载文件时,每个文件输出一个文件。PDF4me Merge 期望如此。 一个数组 包含所有文件数据。 数组聚合器 它执行的是迭代器的逆操作:它 收集 每个迭代器循环的输出和 组合 将其合并成一个数组,并进行结构化处理,以便 Merge 模块可以使用它。
- 迭代器生成:循环 1 → 文件 1 数据,循环 2 → 文件 2 数据,循环 3 → 文件 3 数据
- 数组聚合器收集:
[file1 data, file2 data, file3 data] - 合并操作接收该数组并生成一个合并后的 PDF 文件。
步骤 1:Dropbox:监视文件(触发器)
该模块监控一个文件夹并输出一个文件元数据数组。当出现新文件或文件更新时,它会触发相应的场景。
目前为止的流程: 监视文件。
- 添加 Dropbox → 监视文件 (或者 列表文件 如果您更喜欢投票表决)。
- 联系 *选择您的 Dropbox 连接。
- 文件夹搜索方法: 选择 从列表中选择 (或您喜欢的其他方法)。
- 文件夹路径输入包含要合并的 PDF 文件的文件夹(例如:
/pdf4metest/Merge/mergetest/)。 - 另请查看子文件夹: 放 不 如果您只想保留该文件夹中的文件; 是的 包含子文件夹。
- 限制 *设置每次运行的最大文件数(例如: 10该模块最多可处理 4,000 个项目。

输出: 一个文件对象数组。每个元素都包含 路径显示, 文件名, 文件大小以及类似字段。迭代器接下来将使用此数组。
步骤 2:Dropbox:下载文件(在迭代器路由中)
添加此模块 后 迭代器(它将位于迭代器路由内部)。它使用当前项的路径,在每个迭代周期下载一个文件。
目前为止的流程: 监视文件 → 迭代器 → 下载文件。
- 添加 Dropbox → 下载文件 并将其连接到迭代器。
- 联系 *选择您的 Dropbox 连接。
- 文件选择方式*: 选择 映射文件路径 所以你可以使用迭代器中的路径。
- 文件路径 *: 地图 2. 路径显示 (或者来自“监视文件”的路径字段)。这确保每次迭代都下载正确的文件。

每个周期的产量: 数据 (文件内容), 文件名, 文件大小数组聚合器将收集此信息。 数据 每个循环。
步骤 3:迭代器(流程控制)
迭代器从监视文件中获取数组,并对数组中的每个项目运行一次下面的路由。
目前为止的流程: 监视文件 → 迭代器 → [下载文件,每个项目运行]。
- 添加 流量控制 → 迭代器 并将其连接到 Watch Files。
- 大批: 使能够 地图 并从监视文件中选择数组。您可以映射诸如以下字段: 5. 文件名 和 5. 文件大小 (或者来自“监视文件”模块的等效项),以便迭代器知道要迭代的内容。迭代器会将当前项的字段(例如路径显示、文件名)暴露给其路由中的模块。

行为: 如果“监视文件”返回 5 个文件,则迭代器将运行其路由 5 次。每次运行,“下载文件”都会接收该循环文件的路径并将其下载。
步骤 4:数组聚合器(流程控制)
数组聚合器收集每个迭代器周期的输出,并为合并模块构建一个数组。
目前为止的流程: 监视文件 → 迭代器 → 下载文件 → 数组聚合器。
- 添加 流量控制 → 数组聚合器 并将其连接到迭代器路由之后(它会聚合所有循环)。
- 源模块*: 选择 Dropbox - 监控文件 [2] (或您的监视文件模块)。这定义了聚合器所属的场景运行。
- 靶结构: 选择 PDF4me - 合并多个 PDF 文件 [4...] (或者您的合并模块)。这将聚合数据进行结构化处理,以便合并模块可以使用这些数据。
- 文件 → 文件: 选择 Dropbox - 下载文件 因此,聚合器收集了 文件内容(数据) 从每次下载中获取数据,而不仅仅是元数据。

输出: 单个数组(例如 3. 数组[])包含所有已下载的 PDF 数据,格式为 PDF4me Merge 所期望的格式。
步骤 5:PDF4me:合并多个 PDF 文件
该模块接收聚合数组,并将所有 PDF 文件合并为一个 PDF 文件。
目前为止的流程: … → 数组聚合器 → 合并多个 PDF 文件。
- 添加 PDF4me → 合并多个PDF文件 (在“合并和拆分”下)并将其连接到数组聚合器。
- 联系 *选择您的 PDF4me 连接。
- 文件: 使能够 地图 并选择 3. 数组[] (数组聚合器的输出)。这将收集到的文件数据传递给合并操作。
- 输出文件名请输入合并后的 PDF 文件的名称(例如:
merged_document.pdf)。 - 跳过受保护的PDF文件: 选择 是的 跳过受密码保护的PDF文件, 不 尝试将它们纳入其中。
![PDF4me 合并多个 PDF:文件映射到 3. 数组[],输出文件名,跳过受保护的 PDF](/assets/images/blog/merge-files-make/merge-files-make-5-merge-pdfs.png)
输出: 姓名 和 文件日期 (合并后的PDF缓冲区)。通过 文件日期 上传模块。
步骤 6:Dropbox:上传文件
将合并后的PDF文件保存到输出文件夹。
目前为止的流程: … → 合并多个 PDF 文件 → 上传文件。
- 添加 Dropbox → 上传文件 并将其连接到合并模块。
- 联系 *选择您的 Dropbox 连接。
- 文件夹 *输入目标路径(例如:
/pdf4meoutput)。 - 文件 *: 选择 PDF4me - 合并多个PDF文件 因此,文件内容来自合并输出。

摘要:此流程中的迭代器和聚合器
| 模块 | 角色 |
|---|---|
| 迭代器 | 将监视文件数组拆分为单个项。对每个文件运行一次“下载文件”操作。 |
| 数组聚合器 | 收集每个“下载文件”输出并将其捆绑到一个数组中进行合并。 |
| 结果 | 合并接收 [file1_data, file2_data, …] 并生成一个合并后的PDF文件。 |
如果没有迭代器,就无法分别下载每个文件。如果没有数组聚合器,合并操作就无法接收到所需的合并数组。它们共同将“多个文件元数据项”转换为 PDF4me 所需的“一个文件内容数组”。
后续步骤
- 运行该场景将几个 PDF 文件添加到“监视文件”文件夹并运行该场景。合并后的文件应该会出现在输出文件夹中。
- 合并顺序文件将按照它们在数组中出现的顺序合并(通常是 Watch Files 返回的顺序)。
- 文档有关参数和输出详情,请参阅 合并多个 PDF:创建。