当前位置: 首页 > news >正文

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

相关文章:

pdf merge

在 Ubuntu 22.04 上,你可以使用以下命令行工具来合并多个 PDF 文件: 1. pdftk pdftk 是一个强大的 PDF 工具,支持合并、拆分和其他操作。安装和使用方法如下: sudo apt install pdftk pdftk file1.pdf file2.pdf cat output me…...

Python高性能web框架-FastApi教程:(3)路径操作装饰器方法的参数

路径操作装饰器方法的参数 1. 定义带有参数的POST请求路由 app.post(/items,tags[这是items测试接口],summary这是items测试的summary,description这是items测试的description,response_description这是items测试的response_description) def test():return {items: items数据…...

怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev

本文引用怎么禁用 vscode 中点击 go 包名时自动打开浏览器跳转到 pkg.go.dev 在 vscode 设置项中配置 gopls 的 ui.navigation.importShortcut 为 Definition 即可。 "gopls": {"ui.navigation.importShortcut": "Definition" }ui.navigation.i…...

bean创建源码

去字节面试,直接让人出门左拐:Bean 生命周期都不知道! spring启动创建bean流程 下面就接上了 bean生命周期 doGetBean Object sharedInstance this.getSingleton(beanName); sharedInstance this.getSingleton(beanName, new ObjectF…...

axfbinhexelf文件区别

0 Preface/Foreword axf,bin,hex,elf四个都能存在于嵌入式软件领域。 1 文件介绍 嵌入式软件中常见的文件包含: axf,包含调试信息,文件最大。调试信息放在机器码前面。elfhex,包含地址信息,文件内容较大。bin&#x…...

ABAP时间戳与日期时间转换及时区处理

一、时间戳转换为日期时间 1. 基本转换 CONVERT TIME STAMP <fs_back>-lastchangedatetime TIME ZONE sy-zonloINTO DATE DATA(lv_date)TIME DATA(lv_time).2. 解决8小时时差问题的方案 方案1&#xff1a;直接使用UTC时区&#xff08;推荐&#xff09; CONVERT TIME …...

#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍01

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…...

Flink是什么?Flink技术介绍

官方参考资料&#xff1a;Apache Flink — Stateful Computations over Data Streams | Apache Flink Flink是一个分布式流处理和批处理计算框架&#xff0c;具有高性能、容错性和灵活性。以下是关于Flink技术的详细介绍&#xff1a; 一、Flink概述 ‌定义‌&#xff1a;Fli…...

DETR-ResNet-50:Facebook的革命性目标检测模型

在计算机视觉领域&#xff0c;DETR&#xff08;DEtection TRansformer&#xff09;模型&#xff0c;由Facebook推出&#xff0c;已成为一项具有革命性的技术。DETR-ResNet-50作为一种结合了Transformer和ResNet-50骨干网络的端到端目标检测模型&#xff0c;凭借其出色的性能和创…...

0002.基于springboot +layui二手物品交易平台

适合初学同学练手项目&#xff0c;部署简单&#xff0c;代码简洁清晰&#xff1b; 注:当前项目架构使用前后端未分离哦&#xff01; 一、系统架构 前端&#xff1a;layui| html 后端&#xff1a;springboot | mybatis-plus 环境&#xff1a;jdk1.8 | mysql | maven 二、代…...

【游戏设计原理】7 - 加德纳的多元智能理论

虽然多元智能理论是对认知方式的分类&#xff0c;但它也可以为游戏设计提供丰富的思路和策略&#xff0c;帮助设计师创建更具吸引力、包容性和多样性的游戏。通过理解不同玩家的认知方式和优势&#xff0c;我们可以更精准地设计游戏的元素和玩法&#xff0c;使其能够吸引广泛的…...

React Image Crop——在React应用中轻松实现图片裁剪功能

React Image Crop是一个用于在React应用程序中裁剪和调整图像的库。它提供了一个简单而强大的界面&#xff0c;允许用户选择和调整裁剪区域&#xff0c;并生成裁剪后的图像。 什么是React Image Crop&#xff1f; React Image Crop是一个开源的React组件&#xff0c;用于在浏览…...

深度对比:Ubuntu 与 CentOS 系统的异同点解析

一、历史背景与发展路线 1.1 Ubuntu 的发展历程 诞生时间&#xff1a;2004 年&#xff0c;由 Canonical 公司发布。定位&#xff1a;致力于成为“用户友好的 Linux”&#xff0c;强调桌面和服务器端的广泛适用性。社区支持&#xff1a;拥有全球最大的开源社区之一&#xff0c…...

操作系统内存管理

内存 内存被设计用来存储数据&#xff0c;以便程序在执行之前能够先被加载到内存中&#xff0c;进而被CPU高效地处理。这一机制有效地缓解了CPU与硬盘之间存在的速度差异和矛盾&#xff0c;确保了数据处理流程的顺畅进行。 一、内存管理 1. 进程运行的基本原理 在深入探讨内…...

数据链路层(Java)(MAC与IP的区别)

以太网协议&#xff1a; "以太⽹" 不是⼀种具体的⽹络, ⽽是⼀种技术标准; 既包含了数据链路层的内容, 也包含了⼀些物理 层的内容. 例如: 规定了⽹络拓扑结构, 访问控制⽅式, 传输速率等; 例如以太⽹中的⽹线必须使⽤双绞线; 传输速率有10M, 100M, 1000M等; 以太…...

图像像素如何排列?是如何存储到diocm里面?读取到内存中是如何存储?

图像像素的排列和存储在DICOM&#xff08;Digital Imaging and Communications in Medicine&#xff0c;医学数字成像和通信&#xff09;文件中遵循特定的标准。DICOM 是一种国际标准&#xff08;ISO 12052&#xff09;&#xff0c;用于处理、存储、打印和传输医学影像信息。 …...

HDR视频技术之七:逆色调映射

HDR 技术近年来发展迅猛&#xff0c;在未来将会成为图像与视频领域的主流。当前 HDR 内容非常短缺&#xff0c;限制了 HDR 视听节目的广泛应用。逆色调映射(Inverse Tone Mapping)应运而生&#xff0c;它是一种用来将 SDR 源信号转换为 HDR 源信号的技术&#xff0c;可以应用于…...

12.10深度学习_经典神经网络_GoogleNet自我理解

为了更清晰地展示 GoogLeNet 中每个卷积层及其相关参数&#xff0c;我们可以将这些信息整理成表格形式。这不仅有助于理解每一层的输入和输出尺寸&#xff0c;还能直观地看到卷积核的数量、大小、步长以及填充方式等关键参数。以下是 GoogLeNet 前几层&#xff08;包括两个卷积…...

漫谈 Vercel Serverless 函数

我们需要明白什么是 Serverless。顾名思义&#xff0c;Serverless 并不是没有服务器&#xff0c;而是 “不需要你管理服务器”。就像你去超市买东西&#xff0c;不用自己去种菜、养鸡&#xff0c;直接挑选、付款就好。Vercel 的 Serverless 函数也是类似的&#xff0c;它帮你自…...

Nacos系列:Nacos 控制台手册

引言 Nacos是阿里巴巴中间件部门开源的一款用于服务发现和配置管理的产品&#xff0c;Nacos 控制台主要旨在于增强对于服务列表、健康状态管理、服务治理、分布式配置管理等方面的管控能力&#xff0c;以便进一步帮助用户降低管理微服务应用架构的成本。 一、访问 Nacos 控制台…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...