小朋友们好,大朋友们好!

我是猫妹,一名爱上Python编程的小学生。

欢迎和猫妹一起,趣味学Python。

今日主题

有些PDF文档,有一些权限限制。

比如禁止复制文字,如何解除其权限限制。

和猫妹学Python,一起用pikepdf移除其权限限制。

项目需求

猫爸是一名80后程序员,平时除了写代码,就是阅读一些英文文档。

他的英文不咋地,过了四级,但是没有过六级。

他那个时候的大学啊,四六级考试满分还是100分,他第一次考了58分左右,第二次考了66分左右,非常侥幸地拿到了四级证书。

所以,别看他编程挺熟练的,英语发音真的没有我准。

这也不能怪他,他初中才开始学英文。

咱们呢?

小学就开始了。

没有可比性啊!

英语一般,他又要阅读不少英文文档,怎么办?

猫爸熟练网络啊,直接用现成的网络翻译。

翻译后的信息,先粗略读下,遇到非常重要的地方,再咬文嚼字,精读。

所以,他在阅读英文文档时,经常是复制加粘贴。

文档嘛!PDF居多。

有一次,又见他愁眉苦脸。

原来,竟然还有的PDF禁止复制文字。

这种比较少见,但是还是有的。

这些PDF在复制的时会报错如下错误:

为什么呢?

遇到问题,解决问题,是猫爸一贯的作风。

逢山开路,遇水搭桥。

这次,他又拿起Python这个利器,对这个小限制发起了挑战。

程序演示

这个没有什么可演示的,就是移除PDF的一些权限限制。

文档处理前,有权限显示,比如上面一些图片,不能复制文字等。

处理后呢?限制消除了。

程序原理

程序是猫爸借鉴网上一位热心朋友的,小朋友网上搜索很容易找到的。

避免重复造轮子,这是猫爸常说的一句话。

这次用到的库是pikepdf,使用前先安装下。

pikepdf库

pikepdf基于QPDF,这是一个功能强大的PDF操作和修复库。

Github项目地址:https://github.com/pikepdf/pikepdf

PYPI地址:https://pypi.org/project/pikepdf/0.1.8/

Project description

pikepdf is a Python library for reading and writing PDF files.

pikepdf is based on QPDF, a powerful PDF manipulation and repair library.

Python + QPDF = “py” + “qpdf” = “pyqpdf”, which looks like a dyslexia test. Say it out loud, and it sounds like “pikepdf”.

Python 3.5 and 3.6 are fully supported.

Features:

  • Editing, manipulation and transformation of existing PDFs
  • Based on the mature, proven QPDF C++ library
  • Reading and writing encrypted PDFs, with all encryption types except public key
  • Supports all PDF compression filters
  • Supports PDF 1.3 through 1.7
  • Can create “fast web view” (linearized) PDFs
  • Creates standards compliant PDFs that pass validation in other tools
  • Automatically repairs damaged PDFs, just like QPDF
  • Can manipulate PDF/A, PDF/X and other types without losing their metadata marker
  • Implements more of the PDF specification than existing Python PDF tools
  • For convenience, renders PDF pages or embedded PDF images in Jupyter notebooks and IPython

功能:

pikepdf类似于PyPDF2和pdfrw - 它提供对PDF功能的低级访问,并允许对现有PDF进行编辑和内容转换。

了解一些PDF规范的知识可能会有所帮助,另外它还无法将PDF转换为图像。

目前pikepdf不支持Python 2.7和早期版本的Python 3,但对这些版本的支持可能并不难实现。

pikepdf、PyPDF2、pdfrw功能对比:

好了,今天的分享就到这里,谢谢大家的阅读。

移除PDF文档的一些权限限制。

你学会了吗?

如果你遇到了这个问题,并且只想用编译好的可执行文件,可以找猫妹获取就行,拿来主义,为我所用。

我是猫妹,咱们下次见!