Linux下合并多个PDF文件为一个PDF文件的方法汇总
技术背景
在 Linux 系统中,有时需要将多个 PDF 文件合并成一个大的 PDF 文件。例如,在整理文档、生成报告等场景下,合并多个相关的 PDF 文件可以提高文档的整体性和可读性。有多种工具和方法可实现这一需求,下面将介绍一些常见的解决方案。
实现步骤
1. 使用 pdfunite
pdfunite 是 poppler 工具集的一部分,安装较为常见,使用也相对简单。
pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf
为避免覆盖最后一个输入文件,可添加文件存在性检查:
export output_file=out.pdf && ! test -e $output_file && pdfunite in-1.pdf in-2.pdf in-n.pdf $output_file
2. 使用 Ghostscript
Ghostscript 是一个强大的工具,无需额外安装其他软件。
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf
对于低分辨率的 PDF 文件,可使用以下改进版本:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf
还可使用 -o 选项简化命令:
gs -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -o merged.pdf mine1.pdf mine2.pdf
3. 使用 pdftk
pdftk 可以处理加密的 PDF 文件。
pdftk file1.pdf file2.pdf cat output output.pdf
4. 使用 qpdf
qpdf 适合处理复杂的 PDF 操作,如选择特定页面合并。
qpdf --empty --pages *.pdf -- out.pdf
5. 使用 pdfjoin
pdfjoin a.pdf b.pdf
这会创建一个新的 b-joined.pdf 文件,包含 a.pdf 和 b.pdf 的内容。
6. 使用 Python 和 PyPDF2
当需要合并大量文件时,可使用 Python 结合 PyPDF2 库。
from pathlib import Path
from PyPDF2 import PdfMerger
import natsort
DIR = Path("dir-with-pdfs/")
OUTPUT = "output.pdf"
paths = DIR.glob("*.pdf")
paths = natsort.natsorted(paths)
merger = PdfMerger()
for path in paths:
merger.append(path)
merger.write(OUTPUT)
核心代码
以下是使用 Ghostscript 合并多个 PDF 文件的核心代码:
gs -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -o merged.pdf mine1.pdf mine2.pdf
使用 Python 和 PyPDF2 合并 PDF 文件的核心代码:
from PyPDF2 import PdfMerger
merger = PdfMerger()
pdf_files = ['file1.pdf', 'file2.pdf', 'file3.pdf']
for pdf in pdf_files:
merger.append(pdf)
merger.write('merged.pdf')
merger.close()
您可能感兴趣的文章
- 10-28Linux线程之线程的创建、属性、回收、退出、取消方式
- 10-28Linux下进程的CPU配置与线程绑定过程
- 10-28Linux进程CPU绑定优化与实践过程
- 10-28linux服务器查看进程、线程数量方式
- 10-28Linux下如何清理系统缓存并释放内存
- 10-28Linux如何解决kill进程失败问题
- 10-28CentOS系统下前后端项目部署的操作指南
- 10-28Linux gdb多进程、多线程调试过程
- 10-28Apache HTTP Server 从安装到配置过程详解
- 10-28Ubuntu 24.04启用root图形登录的操作流程


阅读排行
推荐教程
- 05-27Linux NFS服务器安装与配置思路分析
- 05-27阿里云linux服务器安全设置(防火墙策略等)
- 05-27Linux命令学习总结之rmdir命令
- 10-12Linux系统 Centos7.4手动在线升级到Centos7.7
- 05-27SecureCRT中文显示乱码问题的解决方法
- 11-07Linux搭建DHCP服务器的详细过程
- 05-10Ubuntu系统安装ANSYS2021R1
- 06-12linux系统SSL证书部署https单/多站点
- 05-10ANSYS2021R1安装方法Linux centos Ubuntu系统
- 05-27apache密码生成工具htpasswd使用详解


