Linux下合并多个PDF文件为一个PDF文件的方法汇总

 更新时间:2025年07月20日 09:54:41   作者:1010n111  
在 Linux 系统中,有时需要将多个 PDF 文件合并成一个大的 PDF 文件,例如,在整理文档、生成报告等场景下,合并多个相关的 PDF 文件可以提高文档的整体性和可读性,本文给大家介绍了一些常见的方法,需要的朋友可以参考下

Linux 下合并多个 PDF 文件为一个 PDF 文件的方法

技术背景

在 Linux 系统中,有时需要将多个 PDF 文件合并成一个大的 PDF 文件。例如,在整理文档、生成报告等场景下,合并多个相关的 PDF 文件可以提高文档的整体性和可读性。有多种工具和方法可实现这一需求,下面将介绍一些常见的解决方案。

实现步骤

1. 使用 pdfunite

pdfunitepoppler 工具集的一部分,安装较为常见,使用也相对简单。

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.pdfb.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()

最佳实践

  • 选择合适的工具:根据具体需求选择合适的工具。如果只是简单合并整个 PDF 文件,pdfunite 是不错的选择;如果需要处理加密文件,可使用 pdftk;如果需要更复杂的操作,如选择特定页面合并,qpdf 更合适。
  • 注意文件大小:某些工具可能会导致合并后的文件大小显著增加,可根据情况调整参数,如使用 Ghostscript 时设置合适的 PDFSETTINGS
  • 检查文件完整性:合并前确保所有输入的 PDF 文件完整且可读,避免合并过程中出现错误。

常见问题

  • pdfunite 覆盖文件:使用 pdfunite 时,如果忘记指定输出文件名,会覆盖最后一个输入文件。可添加文件存在性检查来避免。
  • convert 命令效果不佳convert 命令通常会将 PDF 转换为图像,导致质量下降和文件大小增加,不建议用于 PDF 合并。
  • pdftk 依赖问题:在某些系统中,pdftk 可能依赖于 gcj,而部分系统不再支持该依赖,可考虑使用其他工具替代。
  • 超链接和注释丢失:部分工具在合并过程中可能会导致超链接和注释丢失,如 pdfunitepdfjoin 等。可使用 pdftksejda-console 等工具来保留这些信息。

以上就是Linux下合并多个PDF文件为一个PDF文件的方法汇总的详细内容,更多关于Linux合并多个PDF为一个的资料请关注脚本之家其它相关文章!

相关文章

  • Apache默认是不支持SSI如何给Apache增加SSI支持

    Apache默认是不支持SSI如何给Apache增加SSI支持

    SSI翻译成中文就是服务器端包含的意思,从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针,下面给大家介绍下如何给Apache增加SSI支持
    2014-05-05
  • Centos7误删除grub2文件进行修复实践

    Centos7误删除grub2文件进行修复实践

    文章介绍了如何通过模拟误删GRUB配置文件的故障,使用救援模式修复系统的方法,通过一系列步骤,包括进入BIOS设置、使用命令行工具恢复GRUB配置文件,最终成功修复系统并重启
    2026-01-01
  • apache+php上传大文件以上传100M为例

    apache+php上传大文件以上传100M为例

    这篇文章主要介绍了apache+php上传大文件以上传100M为例,需要的朋友可以参考下
    2014-03-03
  • Linux Centos 下使用yum 命令安装mysql实现步骤

    Linux Centos 下使用yum 命令安装mysql实现步骤

    这篇文章主要介绍了Linux Centos 下使用yum 命令安装mysql实现步骤的相关资料,需要的朋友可以参考下
    2017-03-03
  • Linux系统的漏洞扫描与修复指南

    Linux系统的漏洞扫描与修复指南

    在当今高度互联的世界中,Linux 作为服务器操作系统、嵌入式系统和云计算平台的核心,其安全性直接关系到整个数字基础设施的稳定,本篇博客将从基础概念讲起,帮助你构建一套完整、可落地的 Linux 漏洞管理方案,需要的朋友可以参考下
    2026-04-04
  • Linux之命令行参数详解

    Linux之命令行参数详解

    文章介绍了Linux命令行参数的组成与分类(短/长选项、带值选项、参数值类型),以及C/C++中main函数接收参数的方式(argc和argv),强调参数化使程序能灵活定制功能,并说明参数传递依赖父进程bash
    2025-08-08
  • Linux通用java程序启动脚本代码实例

    Linux通用java程序启动脚本代码实例

    这篇文章主要介绍了Linux通用java程序启动脚本代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Linux设置位S(SetUID)的详细教程

    Linux设置位S(SetUID)的详细教程

    linux setuid是一种权限管理机制,即设置一个程序以超级用户(root)权限运行,即使由普通用户启动也能够执行某些仅超级用户有权限执行的操作,此机制可以提高程序的安全性和可靠性,但也可能存在一些安全风险,本文将详细介绍Linux设置位S(SetUID)的教程
    2025-05-05
  • Linux系统的SSL/TLS证书机制详解

    Linux系统的SSL/TLS证书机制详解

    文章概述了SSL/TLS证书原理、Linux系统预装证书的存储与用途,以及新服务(如POP3)自动生成自签名证书的过程和局限性,最后推荐使用Let's Encrypt等自动化工具提升安全性
    2025-09-09
  • Linux自动化构建工具-make/Makefile使用解读

    Linux自动化构建工具-make/Makefile使用解读

    Linux项目自动化构建工具Make/Makefile指南,涵盖基础语法、高级特性及实战技巧,如变量、伪目标、模式规则、条件编译等,提升开发效率
    2025-09-09

最新评论