当前位置:首页 > 经验 >

id目录怎么自动生成(id生成目录的方法)

来源:原点资讯(www.yd166.com)时间:2023-10-31 11:24:05作者:YD166手机阅读>>

Typora导出的PDF目录标题自动加编号

在Typora主题文件夹增加如下文件后,标题便自动加上了编号:

https://gitcode.net/as604049322/blog_data/-/blob/master/base.user.css

例如:

id目录怎么自动生成,id生成目录的方法(1)

但是导出的PDF中,目录却没有编号:

id目录怎么自动生成,id生成目录的方法(2)

这是我使用Python处理该文件,使其具有编号,完整代码如下:

# 博客地址:https://blog.CSDN.net/as604049322 __author__ = '小小明-代码实体' __date__ = '2023/8/31' from PyPDF2 import PdfReader, PdfWriter def get_pdf_Bookmark(filename): "作者CSDN:https://blog.csdn.net/as604049322" if isinstance(filename, str): pdf_reader = PdfReader(filename) else: pdf_reader = filename pagecount = len(pdf_reader.pages) # 用保存每个标题id所对应的页码 idnum2pagenum = {} for i in range(pagecount): page = pdf_reader.pages[i] idnum2pagenum[page.indirect_ref.idnum] = i # 保存每个标题对应的标签数据,包括层级,标题和页码索引(页码-1) bookmark = [] def get_pdf_Bookmark_inter(outlines, tab=0): for outline in outlines: if isinstance(outline, list): get_pdf_Bookmark_inter(outline, tab 1) else: bookmark.append( (tab, outline['/Title'], idnum2pagenum[outline.page.idnum])) get_pdf_Bookmark_inter(pdf_reader.outline) return bookmark def pdf_write_bookmark(bookmark, pdf_file, compress=True): pdf_reader = PdfReader(pdf_file) num_pages = len(pdf_reader.pages) pdf_writer = PdfWriter() for page in pdf_reader.pages: if compress: page.compress_content_streams() pdf_writer.add_page(page) # pdf_reader. last_cache = [None] * (max(bookmark, key=lambda x: x[0])[0] 1) for tab, title, pagenum in bookmark: if pagenum >= num_pages: continue parent = last_cache[tab - 1] if tab > 0 else None indirect_id = pdf_writer.add_outline_item(title, pagenum, parent=parent) last_cache[tab] = indirect_id pdf_writer.page_mode = "/UseOutlines" with open(pdf_file, "wb") as out: pdf_writer.write(out) print("已成功将书签写入到", pdf_file) if __name__ == '__main__': file = r"C:\Users\sj\Desktop\集团管理层培训.pdf" bookmark = get_pdf_Bookmark(file) num_cache = [0] * 7 last_tab = 0 new_bookmark = [] for tab, title, pagenum in bookmark: if tab > last_tab: num_cache[tab] = 1 else: num_cache[tab] = 1 new_title = title if not title[0].isdigit(): new_title = ".".join(map(str, num_cache[:tab 1])) " " title # print(tab, new_title, pagenum) new_bookmark.append((tab, new_title, pagenum)) last_tab = tab pdf_write_bookmark(new_bookmark, file)

处理后的PDF目录就有编号了:

id目录怎么自动生成,id生成目录的方法(3)

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

栏目热文

id中怎么保存整个页面(id创建页面怎么在页面后显示)

id中怎么保存整个页面(id创建页面怎么在页面后显示)

分区类型ID是什么? 想要改变分区类型ID,先得明白分区类型ID是什么。大多数电脑用户可能只熟悉分区和分区类型,实际上有...

2023-10-31 11:32:52查看全文 >>

农业生产经营方式都有哪些(农业生产经营三种模式)

农业生产经营方式都有哪些(农业生产经营三种模式)

随着中国乡村振兴战略的持续推进,寻找一种适合农村发展的新型农业经营模式成为了当务之急。试行混合制农场,正是一种能够促进农...

2023-10-31 11:16:46查看全文 >>

农业生产经营方式的变化(我国农业生产经营简介)

农业生产经营方式的变化(我国农业生产经营简介)

改革开放四十多年,最大的变化是通过推进工业化,实现了城镇化的快速发展,尔后是农业现代化的不断深入。这个过程实现了小农户与...

2023-10-31 11:19:32查看全文 >>

农业基本经营制度是什么(农业经营模式有哪些)

农业基本经营制度是什么(农业经营模式有哪些)

文/郑淋议(浙江大学中国农村发展研究院博士生)一、引言农业经营制度是保障国家粮食安全的重要制度,构建现代农业经营体系是新...

2023-10-31 10:46:01查看全文 >>

农业生产的主要经营方式是什么(我国农业生产经营简介)

农业生产的主要经营方式是什么(我国农业生产经营简介)

这些名词都与农田和农业有关,以下是对这些名词的解释:1. 耕地:这是指可以耕种的田地。它包括农田和土地,其中可以种植农作...

2023-10-31 10:53:03查看全文 >>

id复合路径的基本操作(id入门详细教程)

id复合路径的基本操作(id入门详细教程)

一、成品展示二、一些笔记三、总结1 建立复合路径 ctrl 8 取消 ctrl shift alt 82 使用复合路径期...

2023-10-31 11:16:38查看全文 >>

id 的提取目录在哪里(id目录制作方法及步骤)

id 的提取目录在哪里(id目录制作方法及步骤)

在Golang中,可以使用以下步骤将大文件分割为小文件,并重新组合合并将大文件分割为多个临时文件(每个文件大小为1GB)...

2023-10-31 10:51:04查看全文 >>

id如何打包保存(id怎么单独导出一页)

id如何打包保存(id怎么单独导出一页)

一、maven概念 Maven是一个项目管理和整合工具。Maven为开发者提供了一套完整的构建生命周期框架。开发团队几乎...

2023-10-31 11:28:42查看全文 >>

id如何嵌入链接(id怎么自动生成链接)

id如何嵌入链接(id怎么自动生成链接)

InDesign简称“ID”,被称赞为行业领先的印刷和数字媒体布局和页面设计软件,拥有创建和发布书籍、数字杂志、电子书、...

2023-10-31 11:15:18查看全文 >>

id打包后还是链接缺失(id中缺失链接怎么解决)

id打包后还是链接缺失(id中缺失链接怎么解决)

用InDesign排版杂志或者画册如何保存文件?很多人会说不就是按下ctrl s吗?其实不然,在InDesign中如果你...

2023-10-31 10:48:50查看全文 >>

文档排行