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调用浏览器并打开一个网址的例子
Jun 05 Python
Python多线程实例教程
Sep 06 Python
Python for Informatics 第11章 正则表达式(一)
Apr 21 Python
对python3 urllib包与http包的使用详解
May 10 Python
如何利用python制作时间戳转换工具详解
Sep 12 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
使用Template格式化Python字符串的方法
Jan 22 Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 Python
python适合做数据挖掘吗
Jun 16 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
Sep 03 Python
python合并多个excel文件的示例
Sep 23 Python
利用Python第三方库实现预测NBA比赛结果
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
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
php array的学习笔记
2012/05/16 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
javascript dom 操作详解 js加强
2009/07/13 Javascript
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
2013/08/02 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
2016/02/12 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
详解Angular 4 表单快速入门
2017/06/05 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
Python读写unicode文件的方法
2015/07/10 Python
python逆序打印各位数字的方法
2018/06/25 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
经理职责范文
2013/11/08 职场文书
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
管理失职检讨书
2014/02/12 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
党的群众路线学习材料
2014/05/16 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书