pdf merge

在 Ubuntu 22.04 上,你可以使用以下命令行工具来合并多个 PDF 文件:

1. pdftk

pdftk 是一个强大的 PDF 工具,支持合并、拆分和其他操作。安装和使用方法如下:

sudo apt install pdftk
pdftk file1.pdf file2.pdf cat output merged.pdf

2. pdfunite(推荐)

pdfunite 是一个简单且高效的工具,通常是 poppler-utils 包的一部分。安装和使用方法如下:

sudo apt install poppler-utils
pdfunite file1.pdf file2.pdf file3.pdf merged.pdf

3. ghostscript

Ghostscript 是一个功能强大的工具,也支持 PDF 合并操作。使用方法如下:

sudo apt install ghostscript
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf file1.pdf file2.pdf file3.pdf

4. qpdf

qpdf 是一个灵活的 PDF 工具,支持加密、解密和合并等功能。合并 PDF 的方法如下:

sudo apt install qpdf
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf

5. Python 脚本

如果你熟悉 Python,可以使用 PyPDF2pikepdf 库进行合并。示例代码如下:

pip install PyPDF2
from PyPDF2 import PdfMergermerger = PdfMerger()
for pdf in ["file1.pdf", "file2.pdf", "file3.pdf"]:merger.append(pdf)
merger.write("merged.pdf")
merger.close()

哪个工具适合你?

  • 如果需要简单易用,pdfunite 是首选。
  • 如果需要更多功能,pdftkghostscript 是更灵活的选择。
  • 如果你需要用脚本实现自动化,Python 是不错的选择。

你可以使用工具来解除PDF的密码保护,从而避免每次都需要输入密码的麻烦。以下是一些常用的方法和工具:


方法 1:使用 qpdf

qpdf 是一个开源的命令行工具,适合处理PDF文件,包括移除密码保护。

步骤:
  1. 安装 qpdf

    • Ubuntu/Debian:
      sudo apt install qpdf
      
    • Mac (Homebrew):
      brew install qpdf
      
    • Windows: 下载 qpdf 并安装。
  2. 使用以下命令移除密码:

    qpdf --password=你的密码 --decrypt 输入文件.pdf 输出文件.pdf
    

    例子:

    qpdf --password=123456 --decrypt protected.pdf unprotected.pdf
    

方法 2:使用 pdftk

pdftk 也是一个命令行工具,用于处理PDF文件。

步骤:
  1. 安装 pdftk

    • Ubuntu/Debian:
      sudo apt install pdftk
      
    • Mac (Homebrew):
      brew install pdftk-java
      
    • Windows: 下载 pdftk 并安装。
  2. 使用以下命令移除密码:

    pdftk 输入文件.pdf input_pw 你的密码 output 输出文件.pdf
    

    例子:

    pdftk protected.pdf input_pw 123456 output unprotected.pdf
    

方法 3:在线工具(适合非敏感文件)

如果文件不涉及敏感信息,你可以使用一些在线工具来移除密码,例如:

  • Smallpdf
  • iLovePDF
注意事项:
  • 上传前确保文件内容不会泄露。
  • 不建议对包含敏感信息的PDF使用此方法。

方法 4:使用 Adobe Acrobat(付费工具)

Adobe Acrobat 的完整版本支持解密功能。

步骤:
  1. 用密码打开PDF。
  2. 导航到 文件 > 属性 > 安全性
  3. 更改安全性方法为 无安全性
  4. 保存文件。

以上方法可以帮你去掉PDF的密码保护,推荐使用 qpdfpdftk,因为它们是免费的命令行工具且支持自动化操作。


要使用qpdf合并多个PDF文件,你可以使用以下命令:

qpdf --empty --pages *.pdf -- output.pdf

这个命令会将当前目录下的所有PDF文件合并到一个名为output.pdf的文件中。


要合并特定的PDF文件,比如1-6个文件,而不包括7-8,你可以使用qpdf命令行工具,并指定你想要合并的文件。假设你的文件名是file1.pdffile2.pdf,以此类推,你可以使用以下命令:

qpdf --empty --pages file1.pdf file2.pdf file3.pdf file4.pdf file5.pdf file6.pdf -- output.pdf

这个命令会将file1.pdffile6.pdf合并到一个名为output.pdf的文件中,而不会包括file7.pdffile8.pdf

如果文件名的格式不同,确保在命令中使用正确的文件名即可。


  • https://qpdf.readthedocs.io/en/stable/overview.html

  • https://github.com/qpdf/qpdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/64258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Http 接口对接太繁琐?试试 UniHttp 框架吧

前言 从企业级项目来说,如果你项目里还在用传统的编程式Http客户端比如HttpClient、Okhttp去直接对接第三方Http接口, 那么你项目一定充斥着大量的对接逻辑和代码,并且针对不同的对接渠道方需要每次封装一次调用的简化,一旦封装不…

Laravel vs Symfony:哪个框架更适合你?

Laravel vs Symfony:哪个框架更适合你? 在当今的Web开发领域,PHP框架扮演着至关重要的角色。Laravel和Symfony是最受欢迎的两个PHP框架,各自拥有独特的特性和优势。本文将从多个方面对这两个框架进行比较,帮助开发者选…

Java基于SpringBoot的企业OA管理系统,附源码

博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…

Docker:国内加速源

阿里云docker加速云&#xff1a; sudo tee /etc/docker/daemon.json <<EOF { “registry-mirrors”: [“https://euf11uji.mirror.aliyuncs.com”] } EOFhttps://docker.mozhu.dev/ sudo tee /etc/docker/daemon.json <<EOF {"registry-mirrors": [&qu…

2.python变量

理解&#xff0c;我将提供更详细和深入的解释&#xff0c;包括一些进阶概念和实际应用的例子。我们将从变量类型开始&#xff0c;逐步深入到每种数据类型的特性、操作方法以及它们在编程中的应用场景。 文章目录 1. 变量赋值与作用域变量赋值变量作用域 2. 标准数据类型Number…

Linux shell的七大功能 --- history

1.直接输入“history” 这个命令可以显示出曾经使用过的命令&#xff08;最近时间的500条&#xff09; history 2.“history”命令也可以搭配其他命令一起使用。 例&#xff1a;history | grep "vim"&#xff0c;找出所有包含“vim”的记录&#xff1b; 也可以搭配…

【PHP】部署和发布PHP网站到IIS服务器

欢迎来到《小5讲堂》 这是《PHP》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言安装PHP稳定版本线程安全版解压使用 PHP配置配置文件扩展文件路径…

解锁SQL无限可能:如何利用HiveSQL实现0-1背包问题?

目录 1. 创建物品信息表 2. 设置背包容量(通过 Hive 变量设置) 3. 创建动态规划表并初始化 4. 动态规划填充表格过程

Parcel 插件开发指南:如何为 Parcel 创建自定义插件

前言 Parcel 是一个非常强大的打包工具&#xff0c;适用于快速构建现代 Web 应用程序。它默认提供了很多开箱即用的功能&#xff0c;但在某些场景下&#xff0c;我们可能需要自定义一些功能来满足特定需求。这个时候&#xff0c;编写自定义插件就显得尤为重要。本文将通过一个…

scala隐式转换

概念&#xff1a; 在Scala编程语言中&#xff0c;隐式转换是一种强大的功能&#xff0c;它允许程序在需要时自动转换数据类型或增强对象功能。这种转换通常是通过定义一个标记为implicit的函数来实现的&#xff0c;这个函数能够将一种类型转换为另一种类型。隐式转换的使用可以…

腾讯云COS跨域访问CORS配置

腾讯云COS跨域访问CORS配置方法如下&#xff0c;参考以下截图&#xff1a; 参考文章&#xff1a; 跨域及CORS-Nginx配置CORS

mac删除程序坞(Dock)中“无法打开的程序“

参考&#xff1a; Mac删除软件之后图标还在怎么办&#xff1f;https://blog.csdn.net/weixin_46500474/article/details/124284161Mac程序坞中软件删除出现残留“&#xff1f;”图标无法删除解决方法&#xff1a; https://blog.csdn.net/shenwenhao1990/article/details/12865…

EfficientNet与复合缩放理论(Compound Scaling Theory) 详解(MATLAB)

1.EfficientNet网络与模型复合缩放 1.1 EfficientNet网络简介 1.1.1 提出背景、动机与过程 EfficientNet是一种高效的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;由Google的研究团队Tan等人在2019年提出。EfficientNet的设计目标是提高网络的性能&#xff0c;同时减…

vue2 配置 mock.js 模拟后端数据

安装 mockj 首先确保你有一个 vue 2 项目&#xff0c;如果没有&#xff0c;可以用 Vue CLI 创建一个&#xff1a; vue create vue-mock-demo 开始安装 Mock.js npm install mockjs --save-dev 创建 Mock 配置文件 在项目的 src 目录下新建一个文件夹 mock&#xff0c;并在其中创…

python:用 sklearn SVM 构建分类模型,并评价

编写 test_sklearn_5.py 如下 # -*- coding: utf-8 -*- """ 使用 sklearn 估计器构建分类模型&#xff0c;并评价 """ import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.svm import SVC from sk…

Java多线程与线程池技术详解(十)

拥有梦想&#xff0c;即拥有了生命的火种。 梦想是一座高山&#xff0c;攀爬起来虽然艰辛&#xff0c;但一旦到达顶峰&#xff0c;你的努力就将被铭记于人心。 梦想是一个拼图&#xff0c;每一次努力都是一块拼图&#xff0c;最终汇成一个完整的梦想。 梦想是你的信念&#xff…

后端-redis在springboot项目中的使用步骤

redis在springboot项目中的使用场景 如果再创建一张包含状态的表&#xff0c;里面就有两个字段一个id&#xff0c;一个状态&#xff0c;太浪费&#xff0c;那就使用redis存储&#xff0c; 设置营业状态打烊还是营业中

Elasticsearch之mapping属性设置讲解与实战

Elasticsearch之Mapping属性设置讲解与实战 1. 引言 1.1 博客目的与读者定位 本篇技术博客旨在为Elasticsearch的中级用户及开发者提供一个深入浅出的Mapping属性设置指南。无论您是正在构建新的搜索应用,还是希望优化现有Elasticsearch集群的性能,本文都将为您提供详尽的…

解读Modbus TCP指令

解读Modbus TCP指令&#xff1a;[0x01, 0x00, 0x00, 0x00, 0x04, 0x06, 0x01, 0x10, 0x00, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x01, 0x00, 0x01] 在Modbus TCP通信中&#xff0c;数据以字节流的形式传输。理解和解析这些字节对于调试和开发至关重要。本文将详细解析给定的Modbus…

【鸿蒙实战开发】数据的下拉刷新与上拉加载

本章介绍 本章主要介绍 ArkUI 开发中最常用的场景下拉刷新, 上拉加载&#xff0c;在本章中介绍的内容在实际开发过程当中会高频的使用,所以同学们要牢记本章的内容。下面就让我们开始今天的讲解吧&#xff01; List 组件 在 ArkUI 中List容器组件也可以实现数据滚动的效果&a…