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 相关文章推荐
Pyramid Mako模板引入helper对象的步骤方法
Nov 27 Python
Python实现将xml导入至excel
Nov 20 Python
Python实现购物车购物小程序
Apr 18 Python
Python PO设计模式的具体使用
Aug 16 Python
windows 10 设定计划任务自动执行 python 脚本的方法
Sep 11 Python
如何使用python代码操作git代码
Feb 29 Python
在Tensorflow中实现leakyRelu操作详解(高效)
Jun 30 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
Feb 06 Python
Python-OpenCV教程之图像的位运算详解
Jun 21 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绘制一条直线的方法
2015/01/24 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
一个JS翻页效果
2007/07/23 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
[47:22]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:02:26]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第二场 1月18日
2021/03/11 DOTA
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
python交互式图形编程实例(二)
2017/11/17 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
网络维护管理员的自我评价分享
2013/11/11 职场文书
办公文员的工作岗位职责
2013/11/12 职场文书
质检部经理岗位职责
2014/02/19 职场文书
施工员岗位职责
2014/03/16 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
学习与创新自我评价
2015/03/09 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
锦旗赠语
2015/06/23 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
《绝招》教学反思
2016/02/20 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
详解Redis基本命令与使用场景
2021/06/01 Redis
浅谈Python数学建模之数据导入
2021/06/23 Python