如何将多个PDF文件合并/转换为一个大型PDF文件?
我尝试了以下操作,但目标文件的内容与预期不符:
convert file1.pdf file2.pdf merged.pdf
我需要一个非常简单/基本的命令行(CLI)解决方案。最好是我可以将合并/转换的输出直接管道化为pdf2ps(正如我之前在这里提出的问题:Linux管道化(convert->pdf2ps->lp)中所尝试的那样)。
如何将多个PDF文件合并/转换为一个大型PDF文件?
我尝试了以下操作,但目标文件的内容与预期不符:
convert file1.pdf file2.pdf merged.pdf
我需要一个非常简单/基本的命令行(CLI)解决方案。最好是我可以将合并/转换的输出直接管道化为pdf2ps(正如我之前在这里提出的问题:Linux管道化(convert->pdf2ps->lp)中所尝试的那样)。
当前回答
我从终端使用了qpdf,在Windows(Moaxterm)和Linux上为我工作,例如,在新文件C.pdf中加入A.pdf和B.pdf的命令是:
qpdf--空--oficios/A.pdfinformes/B.pdf--salida/C.pdf页面
如果需要更多文档[https://net2.com/how-to-merge-or-split-pdf-files-on-linux/][1]
其他回答
尝试好的重影脚本:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf
或者甚至是低分辨率PDF的改进版本(感谢Adriano指出这一点):
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf
在这两种情况下,输出分辨率都比使用convert的方式高得多:
convert -density 300x300 -quality 100 mine1.pdf mine2.pdf merged.pdf
这样,您就不需要安装任何其他东西,只需使用系统中已安装的东西即可(至少默认情况下,这两个都在我的框中)。
更新:首先感谢您的所有评论!!只是一个可能对你们有用的提示,在谷歌搜索后,我发现了一个缩小PDF大小的妙招,我用它将一个300 MB的PDF缩小到了15 MB,分辨率可以接受!所有这一切都有一个很好的脚本,这里是:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf
我支持pdfunite的建议。然而,当我试图合并>2k个PDF文件时,我得到了参数列表太长的错误。
我求助于Python和两个外部包:PyPDF2(处理所有与PDF相关的事情)和natsort(对目录的文件名进行“自然”排序)。如果这可以帮助某人:
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)
PdfCpu非常有用:
pdfcpu merge c.pdf a.pdf b.pdf
https://pdfcpu.io/core/merge
这里是一个检查合并错误的Bash脚本。
我遇到的问题是,一些PDF合并产生了一些错误消息。由于查找腐败的PDF文件需要反复尝试,我为此编写了一个脚本。
以下Bash脚本逐一合并文件夹中的所有可用PDF,并在每次合并后显示成功状态。只需将其与PDF一起复制到文件夹中,然后从那里执行。
#!/bin/bash
PDFOUT=_all_merged.pdf
rm -f "${PDFOUT}"
for f in *.pdf
do
printf "processing %-50s" "$f ..." >&2
if [ -f "$PDFOUT" ]; then
# https://stackoverflow.com/questions/8158584/ghostscript-to-merge-pdfs-compresses-the-result
# -dPDFSETTINGS=/prepress
status=$(gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="${PDFOUT}.new" "${PDFOUT}" "$f" 2> /dev/null)
if [ "$status" ]
then
echo "gs ERROR: $status" >&2
else
echo "successful" >&2
fi
mv "${PDFOUT}.new" "${PDFOUT}"
else
cp "$f" "${PDFOUT}"
echo "successful" >&2
fi
done
示例输出:
processing inp1.pdf ... successful
processing inp2.pdf ... successful
Apache PDFBoxhttp://pdfbox.apache.org/
PDF发电机此应用程序将获取pdf文档列表并将其合并,将结果保存到新文档中。
用法:java-jar pdfbox-app-x.y.z.jar PDFMerger“源PDF文件(2..n)”“目标PDF文件”