PDF 合并

多 PDF 顺序合并(pdfcpu)

431 次访问

添加 PDF 文件

0 个文件
📄
拖入或点击选择 PDF 文件(支持多选)
基于 pdf-lib 浏览器本地合并 · 文件不上传任何服务器

使用说明

本地处理:使用 pdf-lib 在浏览器内完成合并,文件永不上传任何服务器

调整顺序:直接拖拽列表项即可重新排序,或用 ↑↓ 按钮微调

大小建议:单文件 < 50MB,总和 < 200MB(受浏览器内存限制)

加密 PDF:合并工具会自动忽略加密标志强制读取;如读取失败请先用 PDF 解密工具去除密码

PDF 属性:可在输出设置中填写标题 / 作者 / 主题,写入合并后 PDF 的元数据

关于本工具

了解工具定位 · 使用场景 · 对比优势

将多个 PDF 按指定顺序合并为一个文件。办公中整理合同、归档扫描件、拼接电子签章页面时,无需逐页拖拽。选择文件后调整顺序,后端处理完成后提供下载。文件仅用于合并,处理完毕即从服务器删除。

使用场景

📄

合同归档合并

行政或法务人员需要将多份 PDF 合同(如采购单、验收单、付款凭证)按顺序合并为一个完整档案。本工具无需安装软件,直接拖入文件、拖动排序后一键合并,生成的文件页码连续、书签保留,方便直接归档或发送给审计方。

🎓

论文附录整理

研究生在提交毕业论文时,常需将正文、查重报告、导师签字页、原始数据附录等独立 PDF 按学校要求顺序合并。本工具支持快速调整文件顺序,合并后保持原始排版和超链接,避免因分页错误被退回修改。

🏢

标书文件整合

投标负责人需将商务标、技术标、报价单、资质证明等分散的 PDF 合并为一本完整的标书。本工具在浏览器内完成,不经过第三方服务器,确保敏感报价和资质文件不外泄;合并后文件大小稳定,满足招投标平台的上传限制。

📚

电子书章节拼接

阅读爱好者从不同渠道下载了同一本书的多个 PDF 章节文件(如第 1-3 章、第 4-6 章等),希望合并为完整一本。本工具支持一次性拖入所有章节,按文件名或手动排序后合并,生成的书签结构完整,在阅读器上可连续翻页。

📑

扫描件顺序整理

使用扫描仪或手机拍摄了多页文档(如身份证正反面、发票、合同),但每页是一个独立 PDF 文件。本工具允许拖入后自由调整页面顺序,合并为一个文件,省去逐页打印再扫描的繁琐流程,特别适合需要线上提交的材料。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (Smallpdf)传统方法 (Adobe Acrobat Pro / 桌面软件)
数据隐私纯浏览器处理,文件不上传服务器文件上传至云端处理,受其隐私政策约束文件完全在本地处理,不依赖网络
处理速度秒级完成,取决于文件大小和浏览器性能受上传带宽和服务器排队影响,通常需数秒至数十秒启动软件、加载文件、导出过程较慢,分钟级
离线可用完全离线,无需网络必须联网完全离线
大小限制受浏览器内存限制,通常 500MB 以内免费版通常限制 10-50MB,付费版可更大无严格限制,取决于电脑性能
收费完全免费,无隐藏费用免费版有使用次数限制,高级功能需订阅需购买正版软件,价格较高
注册无需注册,即开即用免费版通常需注册或登录需安装软件,通常无需额外注册
平台依赖跨平台,任何现代浏览器均可跨平台,任何现代浏览器均可需安装特定操作系统版本的软件

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 点击「选择文件」或拖拽 PDF 到上传区,支持一次选择多个文件
  2. 在列表中拖动文件调整合并顺序,顶部文件排在最前
  3. 点击「开始合并」按钮,后端自动调用 pdfcpu 完成顺序拼接
  4. 合并完成后自动弹出下载,保存为单个 PDF 文件

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
文件1.pdf, 文件2.pdf, 文件3.pdf合并后文件.pdf(包含文件1、文件2、文件3的全部页面,按此顺序)典型场景:将多个独立PDF按顺序合并
封面.pdf, 正文.pdf, 附录.pdf完整文档.pdf(封面 → 正文 → 附录)典型场景:合并文档的不同组成部分
单页文件.pdf(仅1页)合并后文件.pdf(包含该单页)边界case:仅上传一个单页PDF文件
空白页.pdf(无内容的空PDF)合并后文件.pdf(包含空白页)边界case:输入文件包含空白页
加密文件.pdf(需密码打开)错误提示:无法处理加密PDF,请先解密易错case:工具不支持加密PDF
图片扫描件.pdf(仅含图片,无文字层)合并后文件.pdf(页面内容为图片,不可选中文字)边界case:扫描件PDF合并后仍保持原样
文件A.pdf, 文件A.pdf(同名文件)合并后文件.pdf(包含文件A两次的全部页面)易错case:重复选择同一文件会重复合并

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 上传非 PDF 文件(图片 / Word / 网页)

错误
直接选中 .jpg / .docx / .html 文件并点击合并
修复
先用其他工具将图片 / Word / 网页转为 PDF,再上传到本工具合并

pdfcpu 只处理 PDF 格式;非 PDF 文件会导致合并失败或输出空白页。Word/图片需先转换,浏览器打印到 PDF 是最简方案。

2. 文件顺序颠倒后手动重排

错误
上传顺序为 A.pdf, B.pdf, C.pdf,但实际想合并为 C, B, A,于是删除全部文件重新上传
修复
上传后拖拽文件列表或点击上下箭头调整顺序,无需重新上传

多数 PDF 合并工具(包括本工具)支持拖拽排序;重新上传浪费流量和时间,且容易漏传。

3. 合并加密 / 有权限保护的 PDF

错误
上传一个带打开密码或编辑权限的 PDF,直接点击合并
修复
先使用 PDF 解锁工具(如 qpdf --decrypt)去除保护,再上传合并

pdfcpu 默认无法处理加密 PDF;合并时要么报错,要么输出损坏文件。需先解密再操作。

4. 上传超大文件导致浏览器崩溃

错误
一次上传 10 个 500MB 的 PDF(总计 5GB)
修复
单次合并建议总大小不超过 500MB;超大文件可分批合并(先合并前 5 个,再合并后 5 个,最后合并两个中间结果)

浏览器内存有限,超大文件会触发 OOM(内存溢出);后端处理也有超时限制。分批合并是稳妥做法。

5. 合并后文件体积异常增大

错误
合并 3 个 2MB 的 PDF,结果输出文件变成 200MB
修复
合并前检查各 PDF 是否包含高分辨率图片或嵌入字体;可先用压缩工具(如 Ghostscript -dPDFSETTINGS=/ebook)压缩各文件

pdfcpu 合并时不做重压缩,原始 PDF 中的大资源会原样保留。如果原始 PDF 体积差异大,合并后取最大体积。

6. 误以为合并会保留书签 / 目录

错误
合并前各 PDF 有书签(目录),期望合并后书签自动整合
修复
合并后书签不会自动合并;需手动用 PDF 编辑工具(如 Adobe Acrobat)重新生成书签

pdfcpu 合并时只拼接页面内容,不合并书签结构。书签是独立的元数据,合并后丢失是正常行为。

7. 上传空 PDF 或损坏 PDF

错误
上传一个 0KB 的 PDF 或从网页打印失败的空白 PDF
修复
上传前用本地 PDF 阅读器打开确认文件正常;0KB 文件直接删除

空 PDF 或损坏 PDF 会导致合并过程卡住或输出错误页。检查文件完整性是基本操作。

8. 合并后页面顺序错乱(未检查排序)

错误
上传文件后直接点击合并,未确认列表顺序是否符合预期
修复
点击合并前,仔细核对文件列表的排列顺序(从上到下即为合并后顺序)

文件列表默认按上传时间排序,但用户可能期望按文件名排序。手动拖拽调整后再合并可避免返工。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

O = P1 ⊕ P2 ⊕ ... ⊕ Pn

变量说明

  • O — 合并后的输出 PDF 文件
  • P1, P2, ..., Pn — 按顺序输入的 n 个 PDF 文件
  • — PDF 页面顺序拼接操作

示例

用户上传 3 个 PDF 文件:P1(3 页)、P2(5 页)、P3(2 页)。工具依次读取每个文件的全部页面,按 P1→P2→P3 顺序拼接,生成一个 10 页的合并 PDF 文件 O。页面顺序为:P1 第 1-3 页、P2 第 4-8 页、P3 第 9-10 页。

适用范围

适用于任意 PDF 文件的顺序合并,不涉及页面旋转、缩放或内容修改。不支持加密 PDF(需先解密)或损坏 PDF。基于 pdfcpu 库实现,兼容 PDF 1.4-2.0 规范。

原理图

上传 PDF文件 A文件 B文件 C后端服务处理pdfcpu 引擎顺序合并生成合并文件单一 PDF可下载流程说明1. 用户上传多个 PDF 文件(支持常见顺序排列)2. 后端服务器使用 pdfcpu 引擎按上传顺序合并3. 返回合并后的单一 PDF 文件,供用户下载保存
用户输入 后端处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import PyPDF2

# 待合并的 PDF 文件列表(按顺序)
pdf_files = ["doc1.pdf", "doc2.pdf", "doc3.pdf"]

# 创建合并器
merger = PyPDF2.PdfMerger()

for pdf in pdf_files:
    try:
        merger.append(pdf)
    except FileNotFoundError:
        print(f"错误:文件 {pdf} 未找到")
        exit(1)

# 输出合并后的文件
output_file = "merged.pdf"
merger.write(output_file)
merger.close()

print(f"合并成功:{output_file}")
package main

import (
	"fmt"
	"os"

	"github.com/pdfcpu/pdfcpu/pkg/api"
)

func main() {
	// 待合并的 PDF 文件列表(按顺序)
	inputFiles := []string{"doc1.pdf", "doc2.pdf", "doc3.pdf"}
	outputFile := "merged.pdf"

	// 检查所有输入文件是否存在
	for _, f := range inputFiles {
		if _, err := os.Stat(f); os.IsNotExist(err) {
			fmt.Printf("错误:文件 %s 不存在\n", f)
			return
		}
	}

	// 执行合并
	if err := api.MergeAppendFile(inputFiles, outputFile, nil); err != nil {
		fmt.Printf("合并失败:%v\n", err)
		return
	}

	fmt.Printf("合并成功:%s\n", outputFile)
}
const PDFMerger = require('pdf-merger-js');
const fs = require('fs');

async function mergePDFs() {
  const merger = new PDFMerger();
  
  // 待合并的 PDF 文件列表(按顺序)
  const pdfFiles = ['doc1.pdf', 'doc2.pdf', 'doc3.pdf'];
  
  // 检查文件是否存在
  for (const file of pdfFiles) {
    if (!fs.existsSync(file)) {
      console.error(`错误:文件 ${file} 未找到`);
      return;
    }
  }
  
  // 按顺序添加文件
  for (const file of pdfFiles) {
    await merger.add(file);
  }
  
  // 保存合并结果
  await merger.save('merged.pdf');
  console.log('合并成功:merged.pdf');
}

mergePDFs().catch(console.error);

常见问题

7 个高频疑问

合并几个几百兆的大文件,浏览器会崩溃吗?支持最大多少页?
本工具在服务端(后端 Go 处理)执行合并,不占用浏览器内存,因此不会因为文件过大导致页面崩溃。文件上传后由服务器读取并调用 pdfcpu 库处理,单次合并建议总页数不超过 1000 页或总大小不超过 500MB——超出此范围时,服务器处理时间可能超过 30 秒导致请求超时。如果文件更大,建议分批合并(如先合并前 500MB,再合并后 500MB),最后用本工具将两个结果再次合并。
合并后的 PDF 文件大小为什么会比原来几个文件加起来还大或者还小?
这是正常现象。pdfcpu 在合并时会重新组织 PDF 内部结构,如果原始文件中嵌入了重复的字体、图像或元数据(如每个文件都内嵌了同一套字体),合并后这些冗余会被去重,文件变小。反之,如果原始文件使用了高度压缩的图像或字体子集化,重新封装后可能因兼容性调整导致体积略微增大(通常不超过 10%)。如果需要保持原始文件体积不变,建议用 Adobe Acrobat 等专业软件合并。
合并后文件里的书签(目录)会保留吗?页码会乱吗?
pdfcpu 默认只做页面级合并,不保留原文件的书签(大纲 / 目录)。合并后的 PDF 是一个连续页面流,原有书签全部丢失。如果书签很重要,建议用 Adobe Acrobat 或 PDFsam 等支持书签合并的工具。页码方面,本工具不会在页面上添加新页码,原文件内嵌的页码(如页脚数字)会原样保留,但合并后顺序是连续的——第一个文件的第 1 页就是合并后的第 1 页,第二个文件的第 1 页是第 N+1 页。
上传后文件会保存在服务器上吗?合并完多久删除?
文件上传到服务器后,仅用于本次合并处理,不写入持久化存储。合并完成后,服务器会立即删除原始文件和合并结果,整个过程在内存中完成,最长保留不超过 10 分钟(等待下载超时)。如果用户下载了合并结果,服务器端的临时文件会在下载完成后 1 分钟内清理。可以理解为:每次合并都是一次性的临时任务,不记录任何文件副本。
为什么我上传的 PDF 显示“文件损坏”或“无法解析”?
可能原因:① 文件本身是扫描件或图片打包成的假 PDF(如用手机拍照后直接改后缀),真正的 PDF 需包含可解析的内部结构,纯图像页面可能被 pdfcpu 判定为无效。② 文件受密码保护或加密,本工具不支持加密 PDF 合并,需要先解密。③ 文件不是标准 PDF(如从某些在线编辑器导出时格式不规范)。解决方法:用 Adobe Acrobat 或 Chrome 浏览器打开该文件,如果能正常显示,尝试“另存为”一份新 PDF 再上传。
合并时能调整文件的顺序吗?比如把第三份文件放到最前面?
可以。上传文件后,页面会以列表形式显示所有上传的文件,每项右侧有上下箭头按钮,点击即可调整顺序。列表从上到下的顺序就是合并后的页面顺序。需要注意的是,调整顺序只改变合并时的拼接顺序,不会修改每个文件内部的页面顺序。如果你需要更精细的页面排序(如从每个文件中只提取部分页面),本工具不支持,可以先用其他页面提取工具拆分后再合并。
合并后的 PDF 里文字还能选中复制吗?会不会变成图片?
不会变成图片。本工具只做页面级拼接,不进行任何渲染或转图片操作,合并后的 PDF 中所有文字、矢量图形、超链接均保持原始状态。文字可选中、复制、搜索,超链接可点击跳转。但如果原文件本身就是扫描件(文字已被栅格化为图片),合并后文字依然不可选中——这是原始文件的问题,不是合并过程导致的。
选择 打开 +新窗口 esc关闭