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

读取PDFfrom 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

参考资料:

1、PDF 1.0

2、PyPDF 2

3、PyPDF2 Homepage

4、PyPDF2 Documentation

5、python name 'file' is not defined的解决办法

6、ReportLab

7、用Python/reportlab生成PDF

8、Writing Pdf with Python: Add image

python处理pdf 层_Python处理PDF及生成多层PDF相关推荐

  1. python处理pdf 层_Python处理PDF及生成多层PDF实例代码

    Python提供了众多的PDF支持库,本文是在Python3环境下,试用了两个库来完成PDF的生成的功能.PyPDF对于读取PDF支持较好,但是没找到生成多层PDF的方法.Reportlab看起来更成 ...

  2. 如何将PDF如何存入MySQL_如何将生成的pdf文件保存到java中的mysql数据...

    我有一个使用itext库生成pdf文件的java类.现在根据我的需要,我必须将生成的pdf文件保存到mysql数据库表中,但是我不知道该怎么做. 我的担心是:- 1.我可以在pdf表的mysql列中提 ...

  3. php将pdf保存文件到本地,将生成的PDF文件存储在服务器上

    小编典典 我设法使用来解决此问题FormData(),方法如下: $(document).on("click", "#PDF", function () { v ...

  4. python 删除pdf页面_python 有什么库可以删除pdf 里面内容

    python 有什么库可以直接删除pdf 里面的一些元素吗?. 比如我用Py2pdf 打印后的元素是 {'/Parent': IndirectObject(1, 0), '/Contents': In ...

  5. python爬虫开发与项目实战pdf下载_python爬虫开发与项目实战PDF高清文档下载

    随着大数据时代到来,网络信息量也变得更多更大,基于传统搜索引擎的局限性,网络爬虫应运而生,本书从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言和Web前端基础知识引领读者入门,之后介绍动态爬虫原 ...

  6. python开发config层_Python全栈开发:configparser模块

    #!/usr/bin/env python # -*- coding;utf-8 -*- import configparser # 创建对象 conn = configparser.ConfigPa ...

  7. Python 图像 一样大小_Python图像处理,顺便生成一张海报

    海报是什么? 海报,是一种常见的宣传形式.通常包括活动的性质.主办单位.时间.地点等内容,多用于影视剧或新品宣传中,利用图片.文字.色彩.空间等要素进行完整的结合,以恰当的形式向人们展示出宣传信息. ...

  8. python arcgis批量绘图_python调用ArcGIS批量生成多环缓冲区(多边形等距离放大)...

    任务说明:需要对地图文件进行要素转面,绘制缓冲区,最后面转线,需要处理的文件有一百多个,手工处理费时费力,写一个脚本,批量自动转换 import os import time import arcpy ...

  9. python制作软件界面_Python 脚本 GUI 界面生成工具

    前言 对于一些 Python 脚本,我们想把它打包给其他人使用,不是黑色的命令行框,而是打包成一个有界面的程序包给别人,让普通用户也能用上是多么酷的事啊. 涉及到界面,就少不了 GUI 编程,对于一些 ...

  10. python批量导入图片_Python批量导入图片生成PowerPoint 2007+文件

    原标题:Python批量导入图片生成PowerPoint 2007+文件 说明:本文是"Python批量爬取微信公众号文章中的图片"的后续文章,用来把从公众号批量抓取的图片还原为P ...

最新文章

  1. opencv画矩形以及在图像上放文字
  2. 数学,原来可以这么美!
  3. iOS-APP启动页加载广告
  4. Xcode 输入时 搜索代码块前面标记的字母含义
  5. Uva220 Othello
  6. Linux命令大全:grep命令
  7. angular中的装饰器 详解
  8. FTP 打开文件夹提示该文件没有程序与之关联来执行该操作 请在控制面板的文件夹选项中创建关联
  9. 历史上的一些重大芯片诞生回顾-推动行业发展
  10. Python3的下载和安装步骤
  11. 最后一批90后开始养生了,中医科普短视频会火吗?
  12. 【NOIP2018】旅行 (洛谷P5049 / P5022) O(nlogn)题解
  13. 在上海相亲碰到如此势利贪婪的“80后”女孩
  14. LINUX学习基础篇(六)帮助命令
  15. html怎样去除顶部的空白,如何消除网页顶部的一行空白?
  16. 图形聚类算法:MCL
  17. Python中的groupby用法
  18. 2.4gwifi最高下载速度_2.4gwifi最高下载速度
  19. K线类型识别—单K线之同价线
  20. 安徽省二级计算机试题中VB题库,2010安徽省全国计算机等级考试二级VB最新考试试题库(完整版)...

热门文章

  1. EP100底层封装-LibCreateSourceFile()函数
  2. 继电保护原理4-自动重合闸
  3. 浅析免费加密软件应该如何选择性下载
  4. Linux内核研究系列之可执行文件格式(转)
  5. 20个最好的免费流程图软件| 流程图制作工具
  6. Python编程之二维码生成
  7. 数值分析的matlab实验总结,数值分析及其MATLAB实验(第2版)
  8. Redis 官方可视化工具,高颜值,功能太强大!
  9. SSD固态硬盘检测工具:SSDReporter mac版
  10. 12306网上买火车票怎么选择上中下铺