# -*- coding: utf-8 -*-
from reportlab.pdfgen import canvas
from reportlab.platypus.tables import Table, TableStyle
from reportlab.lib.units import inch
from reportlab.platypus import Paragraph,Frame
from reportlab.lib.pagesizes import letter, A4
from reportlab.platypus import Image as platImage
from PIL import Image
from reportlab.lib import colors
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase import pdfmetrics
#支持中文,需要下载相应的文泉驿中文字体
pdfmetrics.registerFont(TTFont('hei', 'hei.TTF'))
import testSubFun
testSubFun.testSubFunc('first')
#设置页面大小
c = canvas.Canvas('测试.pdf',pagesize=A4)
xlength,ylength = A4
print('width:%d high:%d'%(xlength,ylength))
#c.line(1,1,ylength/2,ylength)
#设置文字类型及字号
c.setFont('hei',20)
#生成一个table表格
atable = [[1,2,3,4],[5,6,7,8]]
t = Table(atable,50,20)
t.setStyle(TableStyle([('ALIGN',(0,0),(3,1),'CENTER'),
('INNERGRID',(0,0),(-1,-1),0.25,colors.black),
('BOX',(0,0),(-1,-1),0.25,colors.black)]))
textOb = c.beginText(1,ylength-10)
indexVlaue = 0
while(indexVlaue < ylength):
textStr = '''test 中文写入测试中文写入测试中文写入测试中文写入测试%d'''%indexVlaue
#print('nextline,nextline%d'%indexVlaue)
textOb.textLine(textStr)
indexVlaue = indexVlaue + 1
break
c.drawText(textOb)
#简单的图片载入
imageValue = 'test.png'
c.drawImage(imageValue,97,97,300,300)
c.drawImage('test.png',50,50,50,50)
t.split(0,0)
t.drawOn(c,100,1)
c.showPage()
#换页的方式不同的showPage
c.drawString(0,0,'helloword')
c.showPage()
c.save()
注:查询文件路径
可以通过__file__属性,查看文件目录,在相应目录下读取源文件来了解模块如何使用。
>>> import pdfminer
>>> print(pdfminer.__file__)
pdf2txt.py的简单使用方法
python pdf2txt.py -t text -o test.txt test.pdf,其中test.pdf为输入文件,test.txt为输出文件名,-t选项表示解析成的文件类型。
python中可以对pdf文件进行解析和生成,分别需要安装pdfminer/pdfminer3k和reportlab文件库。一、pdf文件的解析pdfminer安装文件路径,分别使用于python2.0/3.0版本:https://pypi.python.org/pypi/pdfminer/https://pypi.python.org/pypi/pdfminer3k/
最近有同学提问说,能不能讲一讲识别发票图片并整理数据到Excel里的方法。今天我们就针对这样的实际需求,分享一个基于
PDF
的
Python
办公自动化的解决案例。
先来看看需求。
在某个
文件
夹下有多个
PDF
类型发票
每一张发票
PDF
是纯图片类型,里面的文字信息无法手动复制(事实上大多数发票可以复制部分文字,但我们仍以图片形式来讲解),大致如下图所示:
需要满足的需求是:获取 总金额、纳税人识别号、开票人,即如下三个方框位置:
最后结合批量操作,在获取上述信息后将其存储入 Excel
中