如何将多个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)中所尝试的那样)。
当前回答
尝试好的重影脚本:
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
其他回答
我从终端使用了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]
作为PyMuPDF(MuPDF的Python绑定)的开发人员之一,我有偏见。
你可以很容易地用它做你想做的事情(还有更多)。骨架代码的工作原理如下:
#-------------------------------------------------
import fitz # the binding PyMuPDF
fout = fitz.open() # new PDF for joined output
flist = ["1.pdf", "2.pdf", ...] # list of filenames to be joined
for f in flist:
fin = fitz.open(f) # open an input file
fout.insertPDF(fin) # append f
fin.close()
fout.save("joined.pdf")
#-------------------------------------------------
仅此而已。有几个选项可用于仅选择页面范围、维护联合目录、反转页面顺序或更改页面旋转等。
我们在PyPi上。
尝试好的重影脚本:
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
使用PyPI中的pdftools。
下载tar.gz文件并解压缩,然后运行如下命令
python pdftools-1.1.0/pdfmerge.py -o output.pdf -d file1.pdf file2.pdf file3
在运行上述命令之前,应该安装python3
此工具支持以下内容
添加插入去除旋转分裂合并拉链
你可以在GitHub上找到更多细节,它是开源的
这里有一个我使用的方法,它有效且易于实现。这将需要fpdf和fpdi库,可在此处下载:
FPDF:http://www.fpdf.org/en/download.phpFPDI:https://www.setasign.com/products/fpdi/downloads
require('fpdf.php');
require('fpdi.php');
$files = ['doc1.pdf', 'doc2.pdf', 'doc3.pdf'];
$pdf = new FPDI();
foreach ($files as $file) {
$pdf->setSourceFile($file);
$tpl = $pdf->importPage(1, '/MediaBox');
$pdf->addPage();
$pdf->useTemplate($tpl);
}
$pdf->Output('F','merged.pdf');