如何将多个PDF文件合并/转换为一个大型PDF文件?

我尝试了以下操作,但目标文件的内容与预期不符:

convert file1.pdf file2.pdf merged.pdf

我需要一个非常简单/基本的命令行(CLI)解决方案。最好是我可以将合并/转换的输出直接管道化为pdf2ps(正如我之前在这里提出的问题:Linux管道化(convert->pdf2ps->lp)中所尝试的那样)。


当前回答

另一个有用的选项是,您还需要选择要合并的文档中的页面:

pdfjoin image.jpg '-' doc_only_first_pages.pdf '1,2' doc_with_all_pages.pdf '-'

它附带包texlive额外实用程序

其他回答

很抱歉,我自己用谷歌找到了答案,运气不错:)

对于感兴趣的人;

我在debian服务器上安装了pdftk(pdf工具包),并使用以下命令实现了所需的输出:

pdftk file1.pdf file2.pdf cat output output.pdf

OR

gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf file1.pdf file2.pdf file3.pdf ...

这反过来又可以直接输送到pdf2ps中。

考虑到pdfunite是poppler的一部分,它有更高的安装机会,使用也比pdftk简单:

pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf

只需确保您记得提供out.pdf,否则它将覆盖命令中的最后一个输入文件

更安全的解决方案可能包括不存在的测试以输出文件为目标

export output_file=out.pdf && \
! test -e $output_file && \
pdfunite in-1.pdf in-2.pdf in-n.pdf $output_file

这里有一个我使用的方法,它有效且易于实现。这将需要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');

我从终端使用了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]

您可以使用sejda控制台,免费且开源。解压缩并运行sejda console merge-f file1.pdf file2.pdf-o merged.pdf

它保留了书签、链接注释、acroforms等。实际上,它有很多选项可以使用,只需运行sejda console merge-h即可查看所有选项。