html旋转代码_付费?是不可能的!20行Python代码实现一款永久免费PDF编辑工具
PDF(Portable Document Format),中文名称便携文档格式是我们经常会接触到的一种文件格式,文献、文档...很多都是PDF格式。它以格式稳定的优势,使得我们在打印、分享、传输过程中能够最优的保持原有色彩和格式。
PDF是以PostScript语言图像模型为基础的一种文档格式,它在格式的稳定性方面虽然具有很大优势。但是,在可编辑性方面却为使用者引入了另外一个困扰。
例如,在文档的分割、合并、剪切、转换、编辑等方面PDF就有些捉襟见肘了。
Adobe Reader、福昕阅读器、熊猫PDF...经常用到的PDF工具只能用于文档阅读,但是免费版都不可以用于文档编辑。虽然,网页版PDF工具,例如SmallPDF、I love PDF可以用于PDF的编辑,但是对于文档大小也有限制。
曾经,为了替换PDF中的一页,我几乎试遍了所有市面上主流的PDF工具,最终还是不得不选择使用付费工具来解决问题。
事后想了想,既然这些商业化软件不靠谱,为什么不考虑自己动手开发一款工具呢?明明几十行代码能够解决的问题,为什么要费那么多劲去下载、安装那些没有节操的软件呢?
本文就来介绍一下利用Python轻松开发一款PDF编辑工具,可以用于PDF转txt、分割、合并、剪切、转换。
PyPDF2
PyPDF2是一个第三方的python PDF库,它能够对PDF文件进行分割、合并、裁剪和转换页面。
另外,它还可以对PDF文件添加自定义数据、水印、密码,也可以从PDF文件中检索出文本和元数据。
安装
使用pip直接安装:
pip install PyPDF2
下面就来演示几项PDF编辑功能,并且会逐行解释代码的含义。
删除PDF页
先给出实现代码,
from PyPDF2 import PdfFileWriter, PdfFileReaderoutput = PdfFileWriter() // 1
input1 = PdfFileReader(open("example.pdf", "rb")) // 2def delete_pdf(index):pages = input1.getNumPages() // 3for i in range(pages):if i+1 in index:continueoutput.addPage(input1.getPage(i)) // 4outputStream = open("PyPDF2-output.pdf", "wb")output.write(outputStream) // 5delete_pdf([2,3,4])
下面来解释一下代码中的几个关键点:
- 声明一个用于输出PDF的实例;
- 读取本地PDF文件;
- 获取PDF文档的页数;
- 读取PDF的第
i
页,添加到输出output
实例中; - 把编辑后的文档保存到本地;
合并PDF
已经实现了删除PDF页,接下来就看一下如何把另外一个PDF中的页面合并到当前PDF中。
方法1:
可以沿着前面删除PDF页的方式进行拓展一下,对PDF进行合并。
from PyPDF2 import PdfFileWriter, PdfFileReaderoutput = PdfFileWriter()
input1 = PdfFileReader(open("example.pdf", "rb"))
input2 = PdfFileReader(open("simple2.pdf", "rb")) // 1def merge_pdf(add_index, origin_index):pages = input1.getNumPages()k = 0for i in range(pages):if i+1 in add_index:output.addPage(input2.getPage(origin_index[k])) // 2pages += 1k += 1output.addPage(input1.getPage(i))outputStream = open("PyPDF2-output.pdf", "wb")output.write(outputStream)merge_pdf([2,3,4], [0, 0, 0])
- 读取需要合并的源文件;
- 遍历到指定页,合并源PDF的页面;
方法2:
除了方法1,还有另外一种方法可以合并PDF:
from PyPDF2 import PdfFileMerger // 1merger = PdfFileMerger()input1 = open("document1.pdf", "rb") // 2
input2 = open("document2.pdf", "rb")
input3 = open("document3.pdf", "rb")merger.append(fileobj = input1, pages = (0,3)) // 3merger.merge(position = 2, fileobj = input2, pages = (0,1)) // 4merger.append(input3) // 5output = open("document-output.pdf", "wb")
merger.write(output)
- 导入PyPDF2合并模块
PdfFileMerger
; - 读取需要处理和合并的PDF文档;
- 从第一个PDF文档中取出需要合并的前3页;
- 把第二个PDF文档的第一页插入到文档中;
- 把第三个PDF文档附到输出文档末尾;
除了上述介绍的2项主要功能,PyPDF2也有一些其他小功能:
旋转
input1.getPage(1).rotateClockwise(90)
使得页面1旋转90度。
添加水印
page = input1.getPage(3)
watermark = PdfFileReader(open("watermark.pdf", "rb"))
page.mergePage(watermark.getPage(0))
其中,水印存储在另外一个PDF文档watermark.pdf
中。
加密
password = "secret"
output.encrypt(password)
首先给一个secret
密码,然后使用encrypt
对输出文档进行加密。
pdfminer
前面介绍的PyPDF2主要擅长于PDF页面级编辑,而对于文本和源数据级别编辑能力较弱。
所以,这里就来介绍另外一款Python库来弥补它的不足。
PDFMiner是一个PDF文档的文本提取工具,它具有如下特性:
- 能够准确获取文本的位置和布局信息;
- 可以将PDF转换为HTML/XML等格式;
- 可以提取目录;
- 可以提取标签内容;
- 支持各种字体类型(Type1、TrueType、Type3和CID);
- 支持中、日、韩语言和垂直书写文本;
安装
pip install pdfminer
PDF转TxT
pdfminer在GitHub的托管项目中,在目录tools
下给出了一些实用的工具集,例如,PDF转HTML、PDF转HTML、PDF转TXT。我们可以直接通过使用下面命令提出PDF文档中的文本信息。
pdf2txt.py samples/simple1.pdf
通过上述2款Python库,就可以实现从页面到文本元数据的编辑,本文只是简单的介绍了每项的基本用法。关于详细的用法和函数列表,可以阅读官方文档,或者阅读GitHub上项目源码进行了解。此外,可以在这些基本的用法基础上进行发散思维,发掘更多有价值的应用场景,例如,提出文本数据之后调用翻译API进行文献翻译。也可以,对软件进行封装,开发成一款通用的PDF编辑工具。
https://u.wechat.com/MCrmocmX5dYALaEqsBzet9s (二维码自动识别)
https://u.wechat.com/MCrmocmX5dYALaEqsBzet9s (二维码自动识别)
https://u.wechat.com/MCrmocmX5dYALaEqsBzet9s (二维码自动识别)
https://u.wechat.com/MCrmocmX5dYALaEqsBzet9s<br> (二维码自动识别)
html旋转代码_付费?是不可能的!20行Python代码实现一款永久免费PDF编辑工具相关推荐
- python pdf编辑开发_20行Python代码实现一款永久免费PDF编辑工具的实现
PDF(Portable Document Format),中文名称便携文档格式是我们经常会接触到的一种文件格式,文献.文档...很多都是PDF格式.它以格式稳定的优势,使得我们在打印.分享.传输过程 ...
- antd的table遍历之后添加合计行_付费?是不可能的!20行Python代码实现一款永久免费PDF编辑工具...
专注Python.AI.大数据 @七步编程 PDF(Portable Document Format),中文名称便携文档格式是我们经常会接触到的一种文件格式,文献.文档...很多都是PDF格式.它以 ...
- 付费?是不可能的!20行Python代码实现一款永久免费PDF编辑工具
(扫码关注) PDF(Portable Document Format),中文名称便携文档格式是我们经常会接触到的一种文件格式,文献.文档...很多都是PDF格式.它以格式稳定的优势,使得我们在打印. ...
- python编辑器中文版_20行Python代码实现一款永久免费PDF编辑工具
转自知乎@Jackpop:https://zhuanlan.zhihu.com/p/153468702知乎搜索"开源 PDF 嵌入字体 Python"的结果 PDF(Portabl ...
- python目标识别代码_利用ImageAI库只需几行python代码超简实现目标检测
什么是目标检测 目标检测关注图像中特定的物体目标,需要同时解决解决定位(localization) + 识别(Recognition).相比分类,检测给出的是对图片前景和背景的理解,我们需要从背景中分 ...
- 聚类 python 代码_不足 20 行 Python 代码,高效实现 k-means 均值聚类算法
下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 不足 20 行 Python 代码,高效实现 k-means 均值聚类算法-1.jpg (143.81 KB, ...
- python做出来的小程序、可以在win10上面运行_超详细,手把手教你用20行Python代码制作飞花令小程序!...
原标题:超详细,手把手教你用20行Python代码制作飞花令小程序! 来源:早起Python 作者:陈熹 飞花令是古时候人们经常玩一种"行酒令"的游戏,是中国古代酒令之一,属雅令. ...
- python小游戏代码大全-20行python代码的入门级小游戏的详解
背景: 作为一个python小白,今天从菜鸟教程上看了一些python的教程,看到了python的一些语法,对比起来(有其他语言功底),感觉还是非常有趣,就随手添了一点内容,改了一个小例程,当着练练手 ...
- 20行 Python 代码爬取王者荣耀全英雄皮肤 | 原力计划
作者 | wangweijun 责编 | Elle 出品 | CSDN 博客 引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王 ...
最新文章
- atitit.mp4 视频文件多媒体格式结构详解
- Parallels Desktop 16 Win11虚拟机将继续正常运作,但将无法连接网络
- 月均活跃用户达1.3亿,B站高可用架构实践
- 一、node.js搭建最简单的服务器
- free,ps,抓包,网络状态
- 【优化选址】基于matlab穷举法求解小区基站选址优化问题【含Matlab源码 439期】
- sqlplus无密码登录TNS协议适配器错误
- 基于STM32C8T6的蓝牙PS4遥控小车手柄
- 思科服务器如何进入网站,思科路由器怎么进入设置网站
- poj 2536 Gopher II
- 直击AWE2018:当AI遇见LED,诸葛小明给光更多可能
- 不同长度的字符串/中文串相似度对比算法
- TriSun PDF to X中文版批量pdf转换功能
- October 2009
- 如何才能增强产品的黏性?
- 开源的APP+小程序商城源码推荐,可支持二次开发。
- 你不得不了解的三大动态域名解析软件选型要素
- 基于intel x86+fpga智能驾驶舱和高级驾驶辅助系统硬件设计(二)
- python3版本降级
- 聚类分析(系统聚类,K-mean聚类)
热门文章
- 识别它的飞鸽传书2012方法是光圈环
- 免费语音软件可以导入你在飞鸽传书2008
- C++ 中重载 + 操作符的正确方法
- ^_-诚征BLOG友情连接
- 推荐 6 个不错的JavaScript动画库
- 对不起,我不接私活了
- 大数据时代,你的信息安全谁负责?
- python找图里的环_python判断无向图环是否存在的示例
- 岗位多多,招聘 23人 | 中国农业科学院深圳农业基因组研究所诚聘博士后和科研人员...
- 罗莎琳德·富兰克林:隐于幕后的DNA之母,以及她被误解却又伟大的短暂一生...