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

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

convert file1.pdf file2.pdf merged.pdf

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


#1楼

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

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

#2楼

pdfjoin a.pdf b.pdf还将创建一个新的b-joined.pdf ,其中包含a.pdf和b.pdf的内容


#3楼

这可以使用ghostscript来完成:

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,且分辨率可以接受! 所有这些都带有良好的ghostscript,它是:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf

#4楼

如果要将所有下载的图像转换为一个pdf,请执行

convert img{0..19}.jpg slides.pdf


#5楼

您可以直接使用convert命令,

例如

convert sub1.pdf sub2.pdf sub3.pdf merged.pdf

#6楼

抱歉,我设法使用Google自己找到了答案,还有些运气:)

对于那些感兴趣的人;

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

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

要么

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

依次将其直接传递到pdf2ps中。


#7楼

我喜欢Chasmo的想法,但是我喜欢利用诸如

convert $(ls *.pdf) ../merged.pdf

提供多个源文件进行convert会导致将它们合并为一个通用pdf。 此命令将实际目录中所有带有.pdf扩展名的文件合并到父目录中的merged.pdf中。


#8楼

Apache PDFBox http://pdfbox.apache.org/

PDFMerger此应用程序将获取pdf文档列表并将其合并,将结果保存到新文档中。

用法:java -jar pdfbox-app-xyzjar PDFMerger“源PDF文件(2 ..n)”“目标PDF文件”


#9楼

这是我使用的一种有效且易于实现的方法。 这将需要两个FPDF和可以在这里下载FPDI库:

  • FPDF: http ://www.fpdf.org/en/download.php
  • FPDI: 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');

#10楼

您可以使用sejda-console ,免费和开放源代码。 解压缩并运行sejda-console merge -f file1.pdf file2.pdf -o merged.pdf

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


#11楼

pdfunite建议。 但是,由于尝试合并> 2k PDF文件,我遇到了“ Argument list too long错误。

我为此使用Python和两个外部软件包: PyPDF2 (处理所有与PDF相关的事情)和natsort (对目录的文件名进行“自然”排序)。 如果这可以帮助某人:

from PyPDF2 import PdfFileMerger
import natsort
import osDIR = "dir-with-pdfs/"
OUTPUT = "output.pdf"file_list = filter(lambda f: f.endswith('.pdf'), os.listdir(DIR))
file_list = natsort.natsorted(file_list)# 'strict' used because of
# https://github.com/mstamy2/PyPDF2/issues/244#issuecomment-206952235
merger = PdfFileMerger(strict=False)for f_name in file_list:f = open(os.path.join(DIR, f_name), "rb")merger.append(f)output = open(OUTPUT, "wb")
merger.write(output)

#12楼

使用python https://pypi.python.org/pypi/pdftools/1.0.6的 PDF工具

下载tar.gz文件并解压缩并运行以下命令

python pdftools-1.1.0/pdfmerge.py -o output.pdf -d file1.pdf file2.pdf file3

运行上面的命令之前,您应该安装pyhton3

该工具支持以下内容

  • 插入
  • 去掉
  • 旋转
  • 分裂
  • 合并
  • 压缩

您可以在下面的链接中找到更多详细信息,它是开源的

https://github.com/MrLeeh/pdftools


#13楼

作为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 joinedfor f in flist:fin = fitz.open(f)  # open an input filefout.insertPDF(fin) # append ffin.close()fout.save("joined.pdf")
#-------------------------------------------------

就是这样 有几个选项可用于仅选择页面范围,维护联合目录,反转页面顺序或更改页面旋转度等。

我们在PyPi上。


#14楼

pdfunite可以合并整个PDF。 例如,如果要获取file1.pdf的第2-7页和file2.pdf的第1,3,4页,则必须使用pdfseparate将文件拆分为单独的PDF,以便将每个页面分配给pdfunite

到那时,您可能想要一个带有更多选项的程序。 qpdf是我发现的处理PDF的最佳工具。 pdftk更大,更慢,由于它对gcj的依赖,因此Red Hat / Fedora不打包它。 其他PDF实用程序具有Mono或Python依赖项。 我发现qpdf生成的输出文件比使用pdfseparatepdfunite将页面组合成30页输出的PDF小得多,分别为970kB和1,6450 kB。 因为它提供了更多选项, qpdf的命令行并不那么简单。 合并文件1和文件2的原始请求可以通过

qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf

#15楼

如果您有多个文件并且不想一一键入名称,这是最简单的解决方案:

qpdf --empty --pages *.pdf -- out.pdf

将多个PDF文件合并/转换为一个PDF相关推荐

  1. pdf合到一起java_将多个PDF文件合并/转换为一个PDF

    回答(16) 2 years ago 考虑到 pdfunite 是poppler的一部分,它有更高的安装机会,使用也比 pdftk 简单: pdfunite in-1.pdf in-2.pdf in- ...

  2. PDF合并:如何将两个PDF文件合并成一个PDF文件

    PDF文件是我们在工作中经常能够用到的文件,尤其是在办公中会遇到很多PDF文件在传输的过程中为了传输更快被拆分成了几个PDF文件,但是要找一个完整的PDF文件就需要把两个被拆分的PDF文件合并成一个P ...

  3. 如何将多个PDF文件合并为一个PDF文件?PDF文件合并教程

    如何合并PDF文件?PDF我们都不陌生,很多人经常在网站上搜狐各种类型的PDF资料,但是有时因为资料太多不好管理和查阅,如果可以把同类型的多个PDF文件合并为一个PDF文件,那无论是保存还是查阅,都会 ...

  4. 怎么将几张pdf合并成一张_如何将多个pdf文件合并成一个pdf文件?

    原标题:如何将多个pdf文件合并成一个pdf文件? 我很喜欢使用PDF文件格式,为什么呢?因为PDF具有许多其他电子文档格式无法相比的优点.PDF文件格式可以将文字.字型.格式.颜色及独立于设备和分辨 ...

  5. 怎么把几个PDF文件合并成一个PDF

    有时一份pdf文档资料会被分成多个部分,在整理的时候可能需要将这些文件合并到一起,那么怎样可以将这多个pdf文件合并成一个呢?下面就教你怎样用PDF编辑器对pdf文件进行合并. ​ 方法/步骤 < ...

  6. 多个pdf文件合并为一个pdf文件

    简单代码搞定将多个pdf文件合并为同一个pdf文件,有python你还有啥担心的呢?在日常生活中需要用到的将多个pdf文件合并为同一个pdf文件的请看过来,不要再去网上下载这啊那的转换软件了.话不多说 ...

  7. 如何将多个PDF文件合并为一个PDF,4种工具推荐,适用手机和PC

    阅读文献时?整理简历时?归档项目文件时,您是否需要合并多个PDF文档呢?将多个PDF合并为一个能更好地帮助您归纳整理文件,使得桌面更为整齐,以后找资料时也更省事. 本文将会呈现如何在电脑和手机两种设备 ...

  8. java将多个pdf文件合并成一个pdf文件

    需要下载jar:https://pan.baidu.com/s/1_wOUUAqWz_5jbfwzMP8ahg package com.skysz.framework.file;import java ...

  9. 怎么把几个单独的pdf文件合并为一个pdf文件?怎么把多个pdf整合成同一个pdf?

    怎么把多个pdf合成一个pdf?有时候我们需要把多个pdf合并成一个pdf,但是还有些小伙伴不知道怎么合并,下面给大家分享一个超级简单的把多个pdf合并成一个pdf的方法: 搜索一下:~~~~~~轻云 ...

最新文章

  1. eclipse run on server
  2. Kotlin, Android的Swift
  3. 如何阻止子元素触发父元素的事件
  4. Xcode 3.2.5免证书开发调试[转]
  5. log4.properties文件【笔记自用】
  6. jboss启动之奇葩问题
  7. 服务治理·理论篇(一)
  8. SDN精华问答 | 了解SDN架构
  9. 编程题练习 两个栈实现队列
  10. ISE创建Microblaze软核(三)
  11. vue 中引入使用jquery
  12. 综述|重邮高新波等最新《少样本目标检测算法》
  13. 海康ehome协议分析(1):前言
  14. MyBatis的优点和缺点
  15. jasper报表格式化bigdecimal(decimal128)数据千分位
  16. Java代理(静态代理、JDK动态代理、CGLIB动态代理)
  17. 一次完整的HTPPS请求
  18. java8我的世界打不开_我的世界打不开
  19. 黑马旅游网完整代码_JavaWeb+黑马旅游网
  20. Warning (276020): Inferred RAM node “ram:block_IQ_filter[3].ram_qout_inst0|dcMem_rtl_0“ from synchro

热门文章

  1. 访客模式(Guest Mode)
  2. 瞬间学会使用java中list的retainAll方法
  3. android application常见错误
  4. Android QQ、微信聊天消息界面设计原理与实现
  5. php实现人员权限管理(用户界面)
  6. 【aelf开发者社区招募】重构 C#代码--中高级工程师预期小半天到一天
  7. c++11の简单线程管理
  8. .NET Core webapi 允许put请求方式配置文件
  9. iOS学习9_事件分发amp;响应链
  10. [转] Linux GCC 编译使用