乐于分享
好东西不私藏

PDF合并还在一个个拖?用这个工具,50个文件5秒搞定

PDF合并还在一个个拖?用这个工具,50个文件5秒搞定

你有没有遇到过这种情况——

要交一份汇总报告,30个PDF文件得按顺序合并成一个,手头上只有一个福昕PDF编辑器,点一下合并,等半天,选下一个,再等半天……

30个文件,光合并就要点30次鼠标,还要排队等加载,烦不烦?

今天介绍一个我自己写的工具,50个PDF合并,5秒钟搞定。

这个工具能做什么

合并 — 把几十个PDF按顺序合并成一个,支持文件夹批量读取,不用一个个手选。

拆分 — 把一个大PDF按每N页拆成多份,或者提取指定页码(比如只取第3、5、7页)。

提取 — 从一堆PDF里把某一页单独抽出来,比如从一本报告里提取目录页。

全程本地运行,不需要上传到任何服务器,断网也能用。

谁在用

  • 资料员
    :项目竣工资料汇总,几十份报告合成一本
  • 行政
    :年度总结、季度报告合订本
  • 财务
    :每月发票PDF汇总打印
  • 设计师
    :给甲方发图时把多张图纸合并成一个PDF

使用方法

合并多个PDF

把要合并的文件放进同一个文件夹,按顺序命名(1.pdf、2.pdf、3.pdf……)。

.\pdf_tool.ps1 merge "C:\报告汇总" "C:\报告汇总\合并输出.pdf"

拆分大PDF

把一个大PDF按每10页拆成一份:

.\pdf_tool.ps1 split "C:\大文件.pdf" --every 10

提取指定页码:

.\pdf_tool.ps1 split "C:\大文件.pdf" --pages 3,5,7

查看文件信息

.\pdf_tool.ps1 info "C:\文件.pdf"

几个细节

  1. 本地运行
     — 纯PowerShell脚本,不上传任何文件到服务器
  2. 批量处理
     — 文件夹里有多少PDF就处理多少,不用一个个选
  3. 保留原始文件
     — 只读不写,原始文件纹丝不动
  4. Windows自带
     — 不需要安装Python或其他环境,Windows自带就能跑

核心代码

核心逻辑不到30行,用的是PowerShell内置的.NET对象:

# 合并:直接拼接二进制流 foreach ($f in $files) {     $bytes = [System.IO.File]::ReadAllBytes($f.FullName)     $buffer.Add($bytes) } [System.IO.File]::WriteAllBytes($OutputPath, $result)  # 读取页数:正则匹配PDF内部计数器 if ($text -match '/Count\s+(\d+)') { $pageCount = [int]$Matches[1] }

怎么获取

回复「PDF」获取工具包,包含完整脚本和使用说明。