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 相关文章推荐
用实例说明python的*args和**kwargs用法
Nov 01 Python
Python ORM框架SQLAlchemy学习笔记之关系映射实例
Jun 10 Python
python的变量与赋值详细分析
Nov 08 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
Feb 03 Python
python 批量添加的button 使用同一点击事件的方法
Jul 17 Python
python 标准差计算的实现(std)
Jul 29 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
python实现简单银行管理系统
Oct 25 Python
Python如何实现FTP功能
May 28 Python
python 对一幅灰度图像进行直方图均衡化
Oct 27 Python
Python爬虫之App爬虫视频下载的实现
Dec 08 Python
五分钟学会怎么用python做一个简单的贪吃蛇
Jan 12 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通用分页类page.php[仿google分页]
2008/08/31 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
javaScript中Math()函数注意事项
2015/06/18 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
详解Angular 4 表单快速入门
2017/06/05 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
python实现淘宝购物系统
2019/10/25 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
Django实现简单的分页功能
2021/02/22 Python
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
合同专员岗位职责
2013/12/18 职场文书
幼儿园家长评语
2014/02/10 职场文书
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
行为习惯主题班会
2015/08/14 职场文书
创业计划书之废品回收
2019/09/26 职场文书