Python处理PDF及生成多层PDF实例代码


Posted in Python onApril 24, 2017

Python提供了众多的PDF支持库,本文是在Python3环境下,试用了两个库来完成PDF的生成的功能。PyPDF对于读取PDF支持较好,但是没找到生成多层PDF的方法。Reportlab看起来更成熟,能够利用Canvas很方便的生成多层PDF,这样就能够实现图片扫描上来的内容也可以进行内容搜索的目标。

Reportlab

生成双层PDF

双层PDF应用PDF中的Canvas概念,先画文字,最后将图片画上去,这样就是两层的PDF。

import os
# import urllib2
import time
from reportlab import platypus
from reportlab.lib.pagesizes import letter
from reportlab.lib.units import inch
from reportlab.platypus import SimpleDocTemplate, Image
from reportlab.pdfgen import canvas

image_file = "./42.png"

# Use Canvas to generate pdf
c = canvas.Canvas('reportlab_canvas.pdf', pagesize=letter)
width, height = letter

c.setFillColorRGB(0,0.77,0.77)
# say hello (note after rotate the y coord needs to be negative!)
c.drawString( 3*inch, 3*inch, "Hello World")
c.drawImage(image_file, 0 , 0)
c.showPage()
c.save()

PyPDF2

读取PDF

from PyPDF2 import PdfFileWriter, PdfFileReader

output = PdfFileWriter()
input1 = PdfFileReader(open("jquery.pdf", "rb"))

# print document info
print(input1.getDocumentInfo())

# print how many pages input1 has:
print ("pdf_document.pdf has %d pages." % input1.getNumPages())

# print page content
page_content = input1.getPage(0).extractText()
print( page_content )

# add page 1 from input1 to output document, unchanged
output.addPage(input1.getPage(0))

# add page 2 from input1, but rotated clockwise 90 degrees
output.addPage(input1.getPage(1).rotateClockwise(90))

# finally, write "output" to document-output.pdf
outputStream = open("PyPDF2-output.pdf", "wb")
output.write(outputStream)

但是PyPDF获取PDF内容有很多问题,可以看这个问题列表。文档中也有说明。

| extractText(self) | ## | # Locate all text drawing commands, in the order they are provided in the | # content stream, and extract the text. This works well for some PDF | # files, but poorly for others, depending on the generator used. This will | # be refined in the future. Do not rely on the order of text coming out of | # this function, as it will change if this function is made more | # sophisticated. | #
 | # Stability: Added in v1.7, will exist for all future v1.x releases. May | # be overhauled to provide more ordered text in the future. | # @return a unicode string object

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
python 网络爬虫初级实现代码
Feb 27 Python
Ubuntu下安装PyV8
Mar 13 Python
python3.5仿微软计算器程序
Mar 30 Python
python 反向输出字符串的方法
Jul 16 Python
python opencv读mp4视频的实例
Dec 07 Python
python调用百度地图WEB服务API获取地点对应坐标值
Jan 16 Python
python+tkinter实现学生管理系统
Aug 20 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
Feb 26 Python
简单了解python shutil模块原理及使用方法
Apr 28 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
Apr 24 #Python
python爬虫实战之爬取京东商城实例教程
Apr 24 #Python
python中urllib.unquote乱码的原因与解决方法
Apr 24 #Python
Python面向对象特殊成员
Apr 24 #Python
Python解惑之整数比较详解
Apr 24 #Python
Python解惑之True和False详解
Apr 24 #Python
Python新手入门最容易犯的错误总结
Apr 24 #Python
You might like
php获取地址栏信息的代码
2008/10/08 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
JavaScript 继承的实现
2009/07/09 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python基础教程之序列详解
2014/08/29 Python
Python中关于字符串对象的一些基础知识
2015/04/08 Python
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
Python之用户输入的实例
2018/06/22 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
Python验证码截取识别代码实例
2020/05/16 Python
python 字符串格式化的示例
2020/09/21 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
详解px单位html5响应式方案
2018/03/08 HTML / CSS
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
毕业典礼演讲稿
2014/05/13 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
运动会演讲稿100字
2014/08/25 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
出纳岗位职责
2015/01/31 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
高三数学教学反思
2016/02/18 职场文书