【GitHub项目推荐--开源PDF 工具】【转载】

12 年历史的 PDF 工具开源了

最近在整理 PDF 的时候,有一些需求普通的 PDF 编辑器没办法满足,比如 PDF 批量合并、编辑等。

于是,我就去 GitHub 上看一看有没有现成的轮子,发现了这个 PDF 神器「PDF 补丁丁」,让人惊讶的是这个 PDF 神器有 12 年的历史。该项目与两个月之前在 GitHub 上开源,至今已经获得 4.2 K的 Star。

PDF 补丁丁是一个多功能的 PDF 文档工具箱,名为 wmjordan 的开发者在 2009 年开始从事程序的开发的相关工作,他便一直完善这个 PDF 工具,到现在也已经有十二年了。

PDF 补丁丁致力于解除 PDF 文档的烦恼,带有一个强大的 PDF 书签编辑器(可自动生成书签),有超快的从 PDF 文档里无损提取图片的能力,又可以合并图片和 PDF 文档,统一页面尺寸,清除文档的打印和复制限制,对于高端开发者,又提供了文档结构探查器等一系列功能。

虽然界面有上世纪的风格,但好在 PDF 补丁丁功能强大,你想要的任何 PDF 处理功能,都能在这个工具上找到,不限于:

  • 修改 PDF 文档

  • 合并已有 PDF 文件或图片

  • 拆分或合并 PDF 文件

  • 将 PDF 页面转换为图片。

  • 提取或删除 PDF 文档中指定的页面,调整顺序。

  • 根据 PDF 文档元数据重命名 PDF 文件名。

  • 替换字体:替换文档中使用的字体;

  • 分析文档结构:以树视图显示 PDF 文档结构,可编辑修改 PDF 文档节点,或将 PDF 文档导出成 XML 文件,供 PDF 爱好者分析、调试之用。

一个小巧轻便的 PDF 阅读器

SumatraPDF 是基于 Windows ,支持多格式(PDF、EPUB、MOBI、CBZ、CBR、FB2、CHM、XPS、DjVu)的阅读器

开源地址:https://github.com/sumatrapdfreader/sumatrapdf

 

原文链接:

 12 年历史的 PDF 工具开源了!

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

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

相关文章

Vue+OpenLayers7入门到实战:快速搭建Vue+OpenLayers7地图脚手架项目。从零开始构建Vue项目并整合OpenLayers7.5.2

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7 前言 本章针对Vue初学者,对Vue不熟悉,甚至还不会Vue的入门学生读者。 本章会详细讲解从NodeJS环境到npm环境的各个步骤,再到使用vue-cli脚手架快速生成项目,以及添加OpenLayers7地图库依赖,编写简单的xyz高德地图显示…

VPP接口二层互联xconnect

以下命令将接口设置为L2二层互联模式,如果要双向流量,需要两个口都设置成此模式。一个接口上接收到的报文将发送到另外一个接口,反之亦然。 vpp# set interface state HundredGigabitEthernet65/0/0 up vpp# set interface state HundredGig…

【大厂AI课学习笔记】1.1.2 现阶段人工智能方法和技术领域

目录 1.2 现阶段人工智能方法和技术领域 1.2.1 从技术应用场景展开 计算机视觉 语音识别 自然语言处理 1.2.2 实现AI的技术工具 机器学习的主要类型: 深度学习的重要性: 1.2 现阶段人工智能方法和技术领域 1.2.1 从技术应用场景展开 计算机视觉…

RuoYi-Vue前后端分离后台开发框架运行详细教程

一、官网下载代码 RuoYi-Vue是一款基于SpringBootVue的前后端分离极速后台开发框架。 若依官网:http://ruoyi.vip演示地址:http://vue.ruoyi.vip代码下载:https://gitee.com/y_project/RuoYi-Vue 下载之后解压,ruoyi-ui是前端代…

opencv学习二值分析

内容来源于《opencv4应用开发入门、进阶与工程化实践》 二值分析: 常见的二值化方法: 基于全局阈值(threshold)得到的二值图像;基于自适应阈值(adaptiveThreshold)得到的二值图像&#xff1…

docker数据卷的使用

文章目录 1、数据卷产生背景2、数据卷的使用2.1、创建数据卷2.2、挂载数据卷2.3、共享数据卷2.4、删除数据卷2.5、备份和迁移数据卷 总结 1、数据卷产生背景 Docker的镜像是由一系列的只读层组合而来,当启动一个容器时,Docker加载镜像的所有只读层&…

JavaScript高级:构造函数

1 引言 构造函数是一种特殊的函数&#xff0c;主要用来初始化对象&#xff1b;常规的 {...} 语法允许创建一个对象&#xff0c;但是通过构造函数可以快速创建多个类似的对象 2 约定 1. 命名以大写字母开头&#xff1b; 2. 它们只能由 “new” 操作符来执行 <script>//…

【C++】filesystem

文章目录 1. 基本配置1.1. VS2019修改C标准1.2. filesystem的引入 2. 日常使用2.1. 认识2.2. 控制台输入路径并对路径进行基本操作 <filesystem>是C 17标准引入的标准库&#xff0c;主要用于处理文件系统的目录和文件操作&#xff0c;接下来总结该库的基本配置和日常使用…

Docker搭建Mysql5.7双主双从集群步骤

记录下在Docker搭建mysql5.7双主双从集群步骤 1.拉取镜像 docker pull mysql:5.72.创建对应数据卷 由于我们需要做数据持久化,所以先在本地创建对应四个节点的相应文件夹 #conf文件夹用于存放配置文件 mkdir -p /root/mysql/mysql-master/conf #data文件夹用于存放mysql数…

BIGVGAN: A UNIVERSAL NEURAL VOCODER WITHLARGE-SCALE TRAINING——TTS论文阅读

笔记地址&#xff1a;https://flowus.cn/share/a16a61b3-fcd0-4e0e-be5a-22ba641c6792 【FlowUs 息流】Bigvgan 论文地址&#xff1a; BigVGAN: A Universal Neural Vocoder with Large-Scale Training Abstract 背景&#xff1a; 最近基于生成对抗网络&#xff08;GAN&am…

【第十八课】DFS:深度优先搜索( acwing-843 n-皇后问题 / c++代码 )

目录 错误写法(可跳 DFS-剪枝 代码 思路二&#xff1a; 原始解法 错误写法(可跳 看到这道题&#xff0c;我想这不还是n个数的全排列的问题么?也就是把数字变成了字符&#xff0c;一些输出格式上的变化。于是就在原有代码上修改一下应该就行。 我的思路就还是path存有可能…

跨站脚本攻击漏洞概述-XSS

什么是跨站脚本攻击 跨站脚本( Cross-site Scripting ) 攻击&#xff0c;攻击者通过网站注入点注入客户端可执行解析的payload(脚本代码)&#xff0c;当用户访问网页时&#xff0c;恶意payload自动加载并执行&#xff0c;以达到攻击者目的(窃取cookie、恶意传播、钓鱼欺骗等)。…

十大排序算法之非线性时间比较类排序

前言 接下来就开始我们的算法学习之路了&#xff0c;代码会分别使用Java与Python来实现&#xff0c;数据处理的算法很多&#xff0c;排序是最基础且最重要的一类&#xff0c;大多数人都是通过学习排序算法入门的。接下来让我们一起学习闻名遐迩的十大排序算法&#xff0c;它们…

非官方 Bevy 作弊书07-09

源自 网页 Working with 2D - Unofficial Bevy Cheat Book 个人用 有道 翻译&#xff0c;希望能够帮助像我一样的 英语不好 的 bevy 初学者 非官方 Bevy 作弊书 7 使用 bevy 2D 本章涵盖与使用 Bevy 制作 2D 游戏相关的主题。 2D Camera Setup - Unofficial Bevy Cheat Book 非…

java.util.LinkedHashMap cannot be cast to xxx

java.util.LinkedHashMap cannot be cast to com.entity.Person 使用mybatis, resultMap映射的是实体类Person, 查询出来的结果是一个ArrayList,然后结果存放在一个ListObject的data属性中, 存放结果的类 public class ListObject { private Object data; public Object get…

R语言【taxlist】——match_names():字符和 taxlist 对象之间的搜索匹配

Package taxlist version 0.2.4 Description 字符向量中提供的名称将使用函数 stringsim&#xff08;&#xff09; 与存储在类 taxlist 对象中的插槽 taxonNames 中的名称进行比较。 Usage match_names(x, object, ...)## S4 method for signature character,character match…

Java算法 leetcode简单刷题记录10

Java算法 leetcode简单刷题记录10 庆祝一下&#xff1a;大概花费了9天&#xff0c;我把所有leetcode Java 的简单题都刷完了&#xff0c;接下来开始冲刺中等和复杂&#xff1b; 简单题里用到的比较多的是字符串的处理&#xff0c;转换&#xff0c;拆分&#xff0c;替换&#x…

【LeetCode: Z 字形变换 + 模拟】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Redis学习——高级篇②

Redis学习——高级篇② Redis7高级之BigKey&#xff08;二&#xff09; 1.MoreKey案例2.BigKey案例2.1 多大算 BigKey以及它的危害2.2 如何产生、发现、删除 3. bigKey生产调优 Redis7高级之BigKey&#xff08;二&#xff09; 1.MoreKe…

【高效开发工具系列】Java读取Html

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…