草庐IT

如何在 Linux 中合并 PDF 文件

Sagar Sharma 2023-07-23 原文

或者你可能需要上传由不同文件组成的单个文件?许多政府和学术门户网站都要求这样做。

作为 Linux 用户,如果你遇到需要合并 PDF 的情况,本教程将帮助你。

在本教程中,我将分享三种合并多个 PDF 文件的方法:

  • 使用 PDF Tricks GUI 工具
  • 使用 LibreOffice(允许你选择页面)
  • 使用 ImageMagick 命令行工具(Linux 教程会没有终端方法就结束么?)

你可以全部了解一下并选择最适合你的。

方法 1:使用 PDF Tricks GUI 工具在 Linux 中合并 PDF

在试用了多种 GUI 工具后,我发现 PDF Tricks 使用简单且易于导航。

此外,除了合并 PDF 文件之外,它还包括其他功能,包括:

  • 压缩 PDF。
  • 拆分 PDF。
  • 将 PDF 转换为 JPG、PNG 和文本格式。

它以 ​​Flatpak​​ 的形式提供。请 ​​确保你的 Linux 系统启用了 Flatpak 支持​​。

我分享的是在 Ubuntu 上启用 Flatpak 的步骤:

sudo apt install flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

现在,使用以下命令在你的系统中安装 PDF Tricks:

flatpak install flathub com.github.muriloventuroso.pdftricks

完成安装后,从系统菜单中打开 PDF Tricks 应用。

第一次运行时,你会得到一个可以使用此工具执行的操作列表。显然,要合并 PDF 文件,请使用第三个选项。

merge pdf files using in ubuntu

在下一步中,单击 “添加文件Add file” 并选择要合并的文件:

choose files to merge

选择文件后,单击 “合并Merge” 按钮:

click on merge button

它将打开系统的默认文件管理器。你可以在此处选择要保存合并文件的位置以及应命名的文件:

locate and name the merged pdf file

就是这样。合并后的 PDF 已保存。

如果你正在寻找,我们提供了一份 ​​可用于阅读和编辑 PDF 文件的最佳 PDF 阅读器​​ 列表。

方法 2:使用 LibreOffice 合并 PDF 文件

很棒的 LibreOffice 能够处理许多与 PDF 相关的任务。你甚至可以 ​​使用 LibreOffice Draw 工具编辑 PDF 文件​​ 来添加数字签名、添加文本等。

好处是你不需要安装其他应用。LibreOffice 已经安装在大多数发行版上,如果不是全部的话。

打开文件管理器并选择要合并的 PDF 文件。

右键单击选定的文件 > 使用其他应用打开Open With Other Application

它将在单独的 LibreOffice Draw 实例中打开你选择的每个 PDF 文件:

open pdf file in libreoffice

现在,你必须从左侧预览栏选择单个页面或整个 PDF 文件(使用 ​​Ctrl + A​​)并将其拖放到要合并的文件的预览栏:

拖放后,单击左上角的第 5 个选项,提示是 直接导出为 PDFExport Directly as PDF:

export directly as pdf in libreoffice

将打开一个文件管理器,你可以从中定位并命名文件:

save merged file from libreoffice

这就完成了!

更多技巧:在命令行中合并 PDF (对于高级用户)

如果我不包括命令行方法,那算什么 Linux 教程?要在命令行中合并 PDF 文件,你可以使用 ImageMagick。

ImageMagick 其实是一个图像相关的工具。PDF 文件本质上是图像,这就是 ImageMagick 可以处理它们的原因。

你可能甚至不需要单独 ​​安装 ImageMagick​​,因为它已经默认安装在大多数发行版中。

例如,我将添加 3 个名为 pdf-1.pdf、pdf-2.pdf 和 pdf-3.pdf 的 PDF 文件,并将最终合并的 PDF 文件输出命名为 MergedFile.pdf(多么聪明):

convert pdf-1.pdf pdf-2.pdf pdf-3.pdf MergedFile.pdf

“no images defined” 故障排除

如果你看到这样的策略错误:

这个问题很容易解决。你只需在 ImageMagick 策略文件中进行少量更改。

打开策略文件进行编辑:

sudo nano /etc/ImageMagick-6/policy.xml

并查找以下行:

<policy domain="coder" rights="none" pattern="PDF" />

现在,你需要将 ​​rights="none"​​ 更改为 ​​rights=read|write​​:

<policy domain="coder" rights="read|write" pattern="PDF" />

change policy in imagemagick to merge pdf files

保存更改,现在你可以使用 ImageMagick 轻松合并文件:

merge pdf files using imagemagick in linux terminal

总结

现在你知道了在 Linux 中合并 PDF 文件的几种方法。合并后的 PDF 文件可能很大。如果你需要在有大小限制的门户上传合并的 PDF 文件,你可以 ​​压缩 PDF 文件​​。

如果你在使用上述方法时遇到任何问题,请告诉我。

(题图:MJ:process docs illustrations in high resolution)

有关如何在 Linux 中合并 PDF 文件的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  3. ruby - 如何在 Ruby 中顺序创建 PI - 2

    出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits

  4. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  5. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  6. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  7. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  8. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  9. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  10. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

随机推荐