资讯专栏INFORMATION COLUMN

教你20行python代码实现编辑永久免费pdf工具

89542767 / 362人阅读


  小编写这篇文章的主要目的,主要是给大家介绍一下关于python代码实现pdf编辑免费pdf工具相关知识的解答。


  PDF是在日常生活中使用范围还是比较的广泛的,很多的文档都是PDF格式。格式稳定是他的一个优势,使得我们在打印、分享、传输过程中能够最优的保持原有色彩和格式。


  PDF各种各样的的版本是比较的多的,它在格式的稳定性方面虽然具有很大优势。但是,在可编辑性方面却为使用者引入了另外一个困扰。


  例如,在文档的分割、合并、剪切、转换、编辑等方面PDF就有些捉襟见肘了。


  pdf版本是比较多的,有的是在线版的,有的是APP版本的,它们在优势方面,各自有各自的优势。


  曾经,为了替换PDF中的一页,我几乎试遍了所有市面上主流的PDF工具,最终还是不得不选择使用付费工具来解决问题。


  事后想了想,既然这些商业化软件不靠谱,为什么不考虑自己动手开发一款工具呢?明明几十行代码能够解决的问题,为什么要费那么多劲去下载、安装那些没有节操的软件呢?


  本文就来介绍一下利用Python轻松开发一款PDF编辑工具,可以用于PDF转TxT、分割、合并、剪切、转换。


  PyPDF2


  PyPDF2是一个第三方的python PDF库,它能够对PDF文件进行分割、合并、裁剪和转换页面。


  另外,它还可以对PDF文件添加自定义数据、水印、密码,也可以从PDF文件中检索出文本和元数据。


  安装


  使用pip直接安装:


$pip install PyPDF2


  下面就来演示几项PDF编辑功能,并且会逐行解释代码的含义。


  删除PDF页


  先给出实现代码,


  from PyPDF2 import PdfFileWriter,PdfFileReader
  output=PdfFileWriter()//1
  input1=PdfFileReader(open("example.pdf","rb"))//2
  def delete_pdf(index):
  pages=input1.getNumPages()//3
  for i in range(pages):
  if i+1 in index:
  continue
  output.addPage(input1.getPage(i))//4
  outputStream=open("PyPDF2-output.pdf","wb")
  output.write(outputStream)//5
  delete_pdf([2,3,4])


  下面来解释一下代码中的几个关键点:


  声明一个用于输出PDF的实例;


  读取本地PDF文件;


  获取PDF文档的页数;


  读取PDF的第i页,添加到输出output实例中;


  把编辑后的文档保存到本地;


  合并PDF


  已经实现了删除PDF页,接下来就看一下如何把另外一个PDF中的页面合并到当前PDF中。


  方法1:


  可以沿着前面删除PDF页的方式进行拓展一下,对PDF进行合并。


 from PyPDF2 import PdfFileWriter,PdfFileReader
  output=PdfFileWriter()
  input1=PdfFileReader(open("example.pdf","rb"))
  input2=PdfFileReader(open("simple2.pdf","rb"))//1
  def merge_pdf(add_index,origin_index):
  pages=input1.getNumPages()
  k=0
  for i in range(pages):
  if i+1 in add_index:
  output.addPage(input2.getPage(origin_index[k]))//2
  pages+=1
  k+=1
  output.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//1


  merger=PdfFileMerger()


  input1=open("document1.pdf","rb")//2


  input2=open("document2.pdf","rb")


  input3=open("document3.pdf","rb")


  merger.append(fileobj=input1,pages=(0,3))//3


  merger.merge(position=2,fileobj=input2,pages=(0,1))//4


  merger.append(input3)//5


  output=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编辑工具。


  20行Python代码就轻松解决了困扰很多同学已久的PDF编辑问题,可见Python的作用和价值是不可忽视的。


  综上所述,相关知识就为大家解答到这里了,希望可以能给大家带来帮助。


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127755.html

相关文章

  • 50Python代码教你获取公众号全部文章

    摘要:今天介绍一种通过抓包端微信的方式去获取公众号文章的方法。如上图,通过抓包工具获取微信的网络信息请求,我们发现每次下拉刷新文章的时候都会请求这个接口。 本文首发自公众号:python3xxx 爬取公众号的方式常见的有两种 通过搜狗搜索去获取,缺点是只能获取最新的十条推送文章 通过微信公众号的素材管理,获取公众号文章。缺点是需要申请自己的公众号。 showImg(//img.mukew...

    MartinHan 评论0 收藏0
  • [译]148个资源让你成为CSS专家

    摘要:层叠样式表二修订版这是对作出的官方说明。速查表两份表来自一份关于基础特性,一份关于布局。核心第一篇一份来自的基础参考指南简写速查表简写形式参考书使用层叠样式表基础指南,包含使用的好处介绍个方法快速写成高质量的写出高效的一些提示。 迄今为止,我已经收集了100多个精通CSS的资源,它们能让你更好地掌握CSS技巧,使你的布局设计脱颖而出。 CSS3 资源 20个学习CSS3的有用资源 C...

    impig33 评论0 收藏0
  • 付费?不存在的,20 代码将电子书转换为有声小说

    摘要:既然要将电子书转换为语音文件,那么第一步要解决的问题就是将电子书中的文字解析出来,这个可以用库来解决。安装读取内容之所以强大就是因为有很多各种各样的库给你用,读取内容只需三行代码即可搞定,刚好手里有本欺骗的艺术一起来看看。 文 | 豆豆 来源:Python 技术「ID: pythona...

    yzd 评论0 收藏0
  • [译]学习Python编程的19个资源

    摘要:它需要将近美元才能买到,但是你可以下载免费的和版本。在需要花费美元来开始你的学习,将会有超过页的内容和个多小时的视频供你访问,还包括以后可以免费更新。 showImg(https://segmentfault.com/img/bVrJpw); 用Python编写代码一点都不难,事实上它一直被赞誉为最容易学的编程语言。如果你准备学习web开发, Python是一个不错的开始,甚至想做游戏...

    xiguadada 评论0 收藏0
  • 学习Python编程的书籍Top7

    摘要:关于作者是软件基金会的成员,也是巴西第一个黑客空间的联合创始人。他曾在巴西媒体,银行和政府部门教授开发,并在,,和上发表演讲。他是一位自学成才的程序员,也是使用学习编程一系列书的作者。 showImg(https://segmentfault.com/img/remote/1460000018926735); 来源 | 愿码(ChainDesk.CN)内容编辑 愿码Slogan | ...

    ccj659 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<