Linux下合并多個(gè)PDF文件為一個(gè)PDF文件的方法匯總
Linux 下合并多個(gè) PDF 文件為一個(gè) PDF 文件的方法
技術(shù)背景
在 Linux 系統(tǒng)中,有時(shí)需要將多個(gè) PDF 文件合并成一個(gè)大的 PDF 文件。例如,在整理文檔、生成報(bào)告等場(chǎng)景下,合并多個(gè)相關(guān)的 PDF 文件可以提高文檔的整體性和可讀性。有多種工具和方法可實(shí)現(xiàn)這一需求,下面將介紹一些常見的解決方案。
實(shí)現(xiàn)步驟
1. 使用 pdfunite
pdfunite 是 poppler 工具集的一部分,安裝較為常見,使用也相對(duì)簡(jiǎn)單。
pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf
為避免覆蓋最后一個(gè)輸入文件,可添加文件存在性檢查:
export output_file=out.pdf && \ ! test -e $output_file && \ pdfunite in-1.pdf in-2.pdf in-n.pdf $output_file
2. 使用 Ghostscript
Ghostscript 是一個(gè)強(qiáng)大的工具,無(wú)需額外安裝其他軟件。
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf
對(duì)于低分辨率的 PDF 文件,可使用以下改進(jìn)版本:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf
還可使用 -o 選項(xiàng)簡(jiǎn)化命令:
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 適合處理復(fù)雜的 PDF 操作,如選擇特定頁(yè)面合并。
qpdf --empty --pages *.pdf -- out.pdf
5. 使用 pdfjoin
pdfjoin a.pdf b.pdf
這會(huì)創(chuàng)建一個(gè)新的 b-joined.pdf 文件,包含 a.pdf 和 b.pdf 的內(nèi)容。
6. 使用 Python 和 PyPDF2
當(dāng)需要合并大量文件時(shí),可使用 Python 結(jié)合 PyPDF2 庫(kù)。
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 合并多個(gè) 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()
最佳實(shí)踐
- 選擇合適的工具:根據(jù)具體需求選擇合適的工具。如果只是簡(jiǎn)單合并整個(gè) PDF 文件,
pdfunite是不錯(cuò)的選擇;如果需要處理加密文件,可使用pdftk;如果需要更復(fù)雜的操作,如選擇特定頁(yè)面合并,qpdf更合適。 - 注意文件大小:某些工具可能會(huì)導(dǎo)致合并后的文件大小顯著增加,可根據(jù)情況調(diào)整參數(shù),如使用 Ghostscript 時(shí)設(shè)置合適的
PDFSETTINGS。 - 檢查文件完整性:合并前確保所有輸入的 PDF 文件完整且可讀,避免合并過(guò)程中出現(xiàn)錯(cuò)誤。
常見問(wèn)題
pdfunite覆蓋文件:使用pdfunite時(shí),如果忘記指定輸出文件名,會(huì)覆蓋最后一個(gè)輸入文件??商砑游募嬖谛詸z查來(lái)避免。convert命令效果不佳:convert命令通常會(huì)將 PDF 轉(zhuǎn)換為圖像,導(dǎo)致質(zhì)量下降和文件大小增加,不建議用于 PDF 合并。pdftk依賴問(wèn)題:在某些系統(tǒng)中,pdftk可能依賴于gcj,而部分系統(tǒng)不再支持該依賴,可考慮使用其他工具替代。- 超鏈接和注釋丟失:部分工具在合并過(guò)程中可能會(huì)導(dǎo)致超鏈接和注釋丟失,如
pdfunite、pdfjoin等??墒褂?pdftk、sejda-console等工具來(lái)保留這些信息。
以上就是Linux下合并多個(gè)PDF文件為一個(gè)PDF文件的方法匯總的詳細(xì)內(nèi)容,更多關(guān)于Linux合并多個(gè)PDF為一個(gè)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Apache默認(rèn)是不支持SSI如何給Apache增加SSI支持
SSI翻譯成中文就是服務(wù)器端包含的意思,從技術(shù)角度上說(shuō),SSI就是在HTML文件中,可以通過(guò)注釋行調(diào)用的命令或指針,下面給大家介紹下如何給Apache增加SSI支持2014-05-05
Centos7誤刪除grub2文件進(jìn)行修復(fù)實(shí)踐
文章介紹了如何通過(guò)模擬誤刪GRUB配置文件的故障,使用救援模式修復(fù)系統(tǒng)的方法,通過(guò)一系列步驟,包括進(jìn)入BIOS設(shè)置、使用命令行工具恢復(fù)GRUB配置文件,最終成功修復(fù)系統(tǒng)并重啟2026-01-01
Linux Centos 下使用yum 命令安裝mysql實(shí)現(xiàn)步驟
這篇文章主要介紹了Linux Centos 下使用yum 命令安裝mysql實(shí)現(xiàn)步驟的相關(guān)資料,需要的朋友可以參考下2017-03-03
Linux通用java程序啟動(dòng)腳本代碼實(shí)例
這篇文章主要介紹了Linux通用java程序啟動(dòng)腳本代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Linux設(shè)置位S(SetUID)的詳細(xì)教程
linux setuid是一種權(quán)限管理機(jī)制,即設(shè)置一個(gè)程序以超級(jí)用戶(root)權(quán)限運(yùn)行,即使由普通用戶啟動(dòng)也能夠執(zhí)行某些僅超級(jí)用戶有權(quán)限執(zhí)行的操作,此機(jī)制可以提高程序的安全性和可靠性,但也可能存在一些安全風(fēng)險(xiǎn),本文將詳細(xì)介紹Linux設(shè)置位S(SetUID)的教程2025-05-05
Linux系統(tǒng)的SSL/TLS證書機(jī)制詳解
文章概述了SSL/TLS證書原理、Linux系統(tǒng)預(yù)裝證書的存儲(chǔ)與用途,以及新服務(wù)(如POP3)自動(dòng)生成自簽名證書的過(guò)程和局限性,最后推薦使用Let's Encrypt等自動(dòng)化工具提升安全性2025-09-09
Linux自動(dòng)化構(gòu)建工具-make/Make?le使用解讀
Linux項(xiàng)目自動(dòng)化構(gòu)建工具M(jìn)ake/Makefile指南,涵蓋基礎(chǔ)語(yǔ)法、高級(jí)特性及實(shí)戰(zhàn)技巧,如變量、偽目標(biāo)、模式規(guī)則、條件編譯等,提升開發(fā)效率2025-09-09

