16人参与 • 2025-07-20 • Linux
在 linux 系统中,有时需要将多个 pdf 文件合并成一个大的 pdf 文件。例如,在整理文档、生成报告等场景下,合并多个相关的 pdf 文件可以提高文档的整体性和可读性。有多种工具和方法可实现这一需求,下面将介绍一些常见的解决方案。
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
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
pdftk
可以处理加密的 pdf 文件。
pdftk file1.pdf file2.pdf cat output output.pdf
qpdf
适合处理复杂的 pdf 操作,如选择特定页面合并。
qpdf --empty --pages *.pdf -- out.pdf
pdfjoin a.pdf b.pdf
这会创建一个新的 b-joined.pdf
文件,包含 a.pdf
和 b.pdf
的内容。
当需要合并大量文件时,可使用 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()
pdfunite
是不错的选择;如果需要处理加密文件,可使用 pdftk
;如果需要更复杂的操作,如选择特定页面合并,qpdf
更合适。pdfsettings
。pdfunite
覆盖文件:使用 pdfunite
时,如果忘记指定输出文件名,会覆盖最后一个输入文件。可添加文件存在性检查来避免。convert
命令效果不佳:convert
命令通常会将 pdf 转换为图像,导致质量下降和文件大小增加,不建议用于 pdf 合并。pdftk
依赖问题:在某些系统中,pdftk
可能依赖于 gcj
,而部分系统不再支持该依赖,可考虑使用其他工具替代。pdfunite
、pdfjoin
等。可使用 pdftk
、sejda-console
等工具来保留这些信息。以上就是linux下合并多个pdf文件为一个pdf文件的方法汇总的详细内容,更多关于linux合并多个pdf为一个的资料请关注代码网其它相关文章!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论