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

  小编写这篇文章的主要目的,主要是给大家介绍一下关于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.cloudads.cn/archives/4000.html

发表评论

登录后才能评论