python 根据关键字 切割pdf_python – 根据大纲拆分pdf

我想到了:

class Darrell(pyPdf.PdfFileReader):

def getDestinationPageNumbers(self):

def _setup_outline_page_ids(outline, _result=None):

if _result is None:

_result = {}

for obj in outline:

if isinstance(obj, pyPdf.pdf.Destination):

_result[(id(obj), obj.title)] = obj.page.idnum

elif isinstance(obj, list):

_setup_outline_page_ids(obj, _result)

return _result

def _setup_page_id_to_num(pages=None, _result=None, _num_pages=None):

if _result is None:

_result = {}

if pages is None:

_num_pages = []

pages = self.trailer["/Root"].getObject()["/Pages"].getObject()

t = pages["/Type"]

if t == "/Pages":

for page in pages["/Kids"]:

_result[page.idnum] = len(_num_pages)

_setup_page_id_to_num(page.getObject(), _result, _num_pages)

elif t == "/Page":

_num_pages.append(1)

return _result

outline_page_ids = _setup_outline_page_ids(self.getOutlines())

page_id_to_page_numbers = _setup_page_id_to_num()

result = {}

for (_, title), page_idnum in outline_page_ids.iteritems():

result[title] = page_id_to_page_numbers.get(page_idnum, '???')

return result

pdf = Darrell(open(PATH-TO-PDF, 'rb'))

template = '%-5s %s'

print template % ('page', 'title')

for p,t in sorted([(v,k) for k,v in pdf.getDestinationPageNumbers().iteritems()]):

print template % (p+1,t)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值