alc*_*hol 986 linux pdf merge command-line-interface
如何将多个PDF文件合并/转换为一个大型PDF文件?
我尝试了以下内容,但目标文件的内容不符合预期:
convert file1.pdf file2.pdf merged.pdf
Run Code Online (Sandbox Code Playgroud)
我需要一个非常简单/基本的命令行(CLI)解决方案.如果我可以将合并/转换的输出直接输入pdf2ps
(最初尝试在我之前提出的问题:Linux管道(转换 - > pdf2ps - > lp)),那将是最好的.
Hub*_*rio 1293
考虑到这pdfunite
是poppler的一部分,它有更高的安装机会,使用也比pdftk
以下更简单:
pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf
Run Code Online (Sandbox Code Playgroud)
Ger*_*ery 487
试试好鬼影:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf
Run Code Online (Sandbox Code Playgroud)
或者甚至通过这种方式获得低分辨率PDF的改进版本(感谢Adriano指出这一点):
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,输出分辨率都比使用转换的这种方式更高更好:
convert -density 300x300 -quality 100 mine1.pdf mine2.pdf merged.pdf
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您不需要安装任何其他东西,只需使用已安装在系统中的内容(至少在我的rhel中都默认使用).
希望这可以帮助,
更新:首先感谢您的所有好评!只是一个可能对你们有用的提示,在谷歌搜索之后,我找到了一个缩小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
Run Code Online (Sandbox Code Playgroud)
干杯!!
alc*_*hol 481
对不起,我设法用谷歌和运气找到了答案:)
对于有兴趣的人;
我在我们的debian服务器上安装了pdftk(pdf工具包),并使用以下命令实现了所需的输出:
pdftk file1.pdf file2.pdf cat output output.pdf
Run Code Online (Sandbox Code Playgroud)
要么
gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf file1.pdf file2.pdf file3.pdf ...
Run Code Online (Sandbox Code Playgroud)
这反过来可以直接传送到pdf2ps.
rod*_*gob 48
也pdfjoin a.pdf b.pdf
将创造一个新的b-joined.pdf
与a.pdf和b.pdf的内容
SaT*_*aTa 47
如果您有多个文件并且不想逐个输入名称,这是最简单的解决方案:
qpdf --empty --pages *.pdf -- out.pdf
Noo*_*oor 35
你可以直接使用convert命令,
例如
convert sub1.pdf sub2.pdf sub3.pdf merged.pdf
Run Code Online (Sandbox Code Playgroud)
ski*_*age 26
pdfunite
可以合并整个PDF.例如,如果您需要file1.pdf中的2-7页和file2.pdf中的页1,3,4,则必须使用pdfseparate
这些文件将文件拆分为每个要提供的页面的单独PDF pdfunite
.
那时你可能想要一个有更多选项的程序.qpdf
是我发现的操作PDF的最佳实用程序.pdftk
更大更慢,Red Hat/Fedora因为依赖于gcj而不打包它.其他PDF实用程序具有Mono或Python依赖项.我发现qpdf
生成的输出文件要比使用pdfseparate
和pdfunite
组装成30页输出PDF,970kB和1,6450 kB的输出文件要小得多.因为它提供了更多选项,所以qpdf
命令行并不那么简单; 可以执行合并file1和file2的原始请求
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
Run Code Online (Sandbox Code Playgroud)
小智 14
Apache PDFBox http://pdfbox.apache.org/
PDFMerger此应用程序将获取pdf文档列表并合并它们,将结果保存在新文档中.
用法:java -jar pdfbox-app-xyzjar PDFMerger"源PDF文件(2 ..n)""目标PDF文件"
Rav*_*ati 11
使用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
Run Code Online (Sandbox Code Playgroud)
您应该在运行上述命令之前安装pyhton3
此工具支持以下内容
您可以在下面的链接中找到更多详细信息,它是开源的
https://github.com/MrLeeh/pdftools
小智 8
如果要将所有下载的图像转换为一个pdf,请执行
convert img{0..19}.jpg slides.pdf
您可以使用sejda-console,免费和开源.解压缩然后运行 sejda-console merge -f file1.pdf file2.pdf -o merged.pdf
它保留书签,链接注释,acroforms等.它实际上有很多你可以玩的选项,只是运行sejda-console merge -h
来查看它们.
我从终端使用 qpdf 并在 Windows (Mobaxterm) 和 Linux 上为我工作,例如在新文件 C.pdf 中将 A.pdf 与 B.pdf 连接的命令是:
qpdf --empty --pages oficios/A.pdf informes/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")
#-------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
就是这样。有几个选项可用于仅选择页面范围、维护联合目录、反转页面顺序或更改页面旋转等。
我们在 PyPi 上。
我是第二个pdfunite
推荐.然而,Argument list too long
当我尝试合并> 2k PDF文件时,我遇到了错误.
为此我转向Python和两个外部包:PyPDF2(处理所有与PDF相关的东西)和natsort(对目录的文件名进行"自然"排序).如果这可以帮助某人:
from PyPDF2 import PdfFileMerger
import natsort
import os
DIR = "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)
Run Code Online (Sandbox Code Playgroud)
您可以使用免费开源的pdftools(免责声明:我是它的作者)。
它基本上是 Latex 包的 Python 接口pdfpages
。
要逐个合并 pdf 文件,您可以运行:
pdftools --input-file file1.pdf --input-file file2.pdf --output output.pdf
Run Code Online (Sandbox Code Playgroud)
要将目录中的所有 pdf 文件合并在一起,您可以运行:
pdftools --input-dir ./dir_with_pdfs --output output.pdf
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
660304 次 |
最近记录: |