添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
爱旅游的牛排  ·  2016中国城市规划年会·  1 月前    · 
深情的炒粉  ·  (VBA) 使用数组 | ...·  10 月前    · 
英姿勃勃的地瓜  ·  AttributeError: ...·  1 年前    · 
深情的西装  ·  ViuTV_幪面超人Build ...·  1 年前    · 

需要使用到的函数

getOutlines()检索文档中存在的文本大纲,返回的对象是一个嵌套的列表
举个例子 ,加入你的pdf文档的目录如下图所示
pdf文档目录
那么使用getOutlines()读取出来的嵌套列表为

{ '/Title' : '第1章 绪论' , '/Page' : IndirectObject ( 16 , 0 ) , '/Type' : '/Fit' } , [ { '/Title' : '1.1模块与接口' , '/Page' : IndirectObject ( 16 , 0 ) , '/Type' : '/Fit' } , { '/Title' : '1.2 工具和软件' , '/Page' : IndirectObject ( 18 , 0 ) , '/Type' : '/Fit' } , { '/Title' : '1.3树语言的数据结构' , '/Page' : IndirectObject ( 18 , 0 ) , '/Type' : '/Fit' } , { '/Title' : '程序设计:直线式程序解释器' , '/Page' : IndirectObject ( 22 , 0 ) , '/Type' : '/Fit' } , { '/Title' : '推荐阅读' , '/Page' : IndirectObject ( 23 , 0 ) , '/Type' : '/Fit' } , { '/Title' : '习题' , '/Page' : IndirectObject ( 24 , 0 ) , '/Type' : '/Fit' } ] , { '/Title' : '第2章 词法分析' , '/Page' : IndirectObject ( 25 , 0 ) , '/Type' : '/Fit' } , [ { '/Title' : '2.1词法单词' , '/Page' : IndirectObject ( 25 , 0 ) , '/Type' : '/Fit' } , { '/Title' : '2.2正则表达式' , '/Page' : IndirectObject ( 26 , 0 ) , '/Type' : '/Fit' } , { '/Title' : '2.3有限自动机' , '/Page' : IndirectObject ( 28 , 0 ) , '/Type' : '/Fit' } , { '/Title' : '2.4非确定有限自动机' , '/Page' : IndirectObject ( 30 , 0 ) , '/Type' : '/Fit' } , [ { '/Title' : '2.4.1将正则表达式转换为NFA' , '/Page' : IndirectObject ( 31 , 0 ) , '/Type' : '/Fit' } , { '/Title' : '2.4.2将NFA转换为DFA' , '/Page' : IndirectObject ( 33 , 0 ) , '/Type' : '/Fit' } ] , { '/Title' : '2.5 Lex:词法分析器的生成器' , '/Page' : IndirectObject ( 35 , 0 ) , '/Type' : '/Fit' } , { '/Title' : '程序设计:词法分析' , '/Page' : IndirectObject ( 37 , 0 ) , '/Type' : '/Fit' } , { '/Title' : '推荐阅读' , '/Page' : IndirectObject ( 38 , 0 ) , '/Type' : '/Fit' } , { '/Title' : '习题' , '/Page' : IndirectObject ( 38 , 0 ) , '/Type' : '/Fit' } ]

总结一下就是书签是一级目录时, 其在列表中是一个字典;二级目录是在列表中再嵌套一个列表;三级目录是在二级目录的列表中再嵌套一个列表,以此类推。

我们的目的是读出所有字典中的‘/Title’键所对应的值,可以使用递归函数实现该功能。当列表中的值不是列表变量而是字典变量时,取出字典中‘/Title’键所对应的值,存储起来

from PyPDF2 import PdfFileReader as pdf_read
#每个书签的索引格式
#{'/Title': '书签名', '/Page': '指向的目标页数', '/Type': '类型'}
directory_str = ''
def bookmark_listhandler(list):
    global directory_str
    for message in list:
        if isinstance(message, dict):
            directory_str += message['/Title'] + '\n'
            # print(message['/Title'])
        else:
            bookmark_listhandler(message)
with open('现代编译原理.pdf', 'rb') as f:
    pdf = pdf_read(f)
    #检索文档中存在的文本大纲,返回的对象是一个嵌套的列表
    text_outline_list = pdf.getOutlines()
    bookmark_listhandler(text_outline_list)
with open('现代编译原理目录.txt', 'w', encoding='utf-8') as f:
    f.write(directory_str)
                    python 从PDF文件中读取书签/目录一级目录二级目录三级目录使用python3   ,   需导入PyPDF2模块from PyPDF2 import PdfFileReader as pdf_read#每个书签的索引格式#{'/Title': '书签名', '/Page': 指向的目标页数, '/Type': '类型'}directory_str = ''def bookmark_listhandler(list):    global directory_str    fo
 java -jar PdfToc.jar -i "file.pdf" ["toc.txt"]
获取 ToC 并在 toc.txt 打印: 
 java -jar PdfToc.jar -i "file.pdf" "toc.txt"
获取 ToC 并在标准输出打印: 
 java -jar PdfToc.jar -i "file.pdf"
输出格式:
 页码级标题
 '''PageNumber''' - pdf 文件的页面。 第一个页面文件是 1(不是 0)。
 '''level''' - 标题级别。 0 - 是根级别,1 - 下一级,...
				
对于pdf文件的相关操作,PyPDF2文档具有许多功能,阅读完本文后相信你会对pdf的操作变得非常自信!! https://pythonhosted.org/PyPDF2/ 该网址是PyPDF2英文文档的链接,本人从提取了相应数据,并制作成表格方便比较和分析。 一、准备工作 1.安装PyPDF2 本文采用在pycharm安装,左上角File---Settings---找到Project---Python interpreter---点击+ ---输入pypdf2(大小写均可)---点击in
理论知识:http://stackoverflow.com/questions/4643489/how-do-i-retrieve-a-page-number-or-page-reference-for-an-outline-destination-in 原理就是:通过CGPDFDocumentGetCatalog方法可以获取pdf的元信息,这是一个类似Dictionary的结构,而目录信息
拿到一个没有目录pdf,因为实在太不爽……所以想有没有办法自动化的方法可以生成目录QUQ,查了查果然acrobat有js的api可以提供,但是写完之后发现只能在acrobat上面能索引QUQ,其他的阅读器都不能用索引……只能看见目录……真真不爽!!(*  ̄︿ ̄) 先说下思路吧……挺傻的……一般当当这样卖书的地方都有书的目录和页码,这个很好找的嘛。然后copy到txt里,先用python把它变成
python实现ppt(或pptx)文件pdf文件python实现合并多个pdf文件为一个文件python实现对txt目录文件排版的改变(未完成) 用python实现多个txt目录文件的合并(未完成) 二、具体功能实现 文件夹结构框图 function1:为PDF文件添加书签 所需python库:pyPDF2(自己安装)、os、tkinter # import from PyPDF2 import PdfFileReader
有时候我们用的一些pdf资料是没有目录的,这样找寻我们想到的东西比较麻烦。本篇文章就为大家带来python来生成pdf目录书签的方法。 首先,我们需要下载一个软件FreePic2Pdf,利用它我们可以将我们的pdf文件导入书签 工具下载:https://www.jb51.net/softs/57870.html 然后,我们需要获取原始版本的目录,这个可以到京东上找到书籍,查看目录,把其目录复制到一个txt文件即可,或者有些pdf允许复制,也可以直接把目录复制下来。 复制之后假设存到aa.txt文件: 接下来的,就是利用python读取txt来实现目录生成: 代码还是比较简单的,