gpt4 book ai didi

python - 根据大纲拆分 pdf

转载 作者:太空狗 更新时间:2023-10-30 00:58:03 25 4
gpt4 key购买 nike

我想使用 pyPdf 根据大纲拆分 pdf 文件,其中大纲中的每个目标都指向 pdf 中的不同页面。

示例大纲:

main       --> points to page 1  sect1    --> points to page 1  sect2    --> points to page 15  sect3    --> points to page 22

在 pyPdf 中很容易迭代文档的每一页或文档大纲中的每个目标;但是,我不知道如何获取目标指向的页码。

有人知道如何在大纲中找到每个目的地的引用页码吗?

最佳答案

我想通了:

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)

关于python - 根据大纲拆分 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1918420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com