一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Typora導出的PDF目錄標題自動加編號

 小小明代碼實體 2023-08-31 發(fā)布于廣東

Typora導出的PDF目錄標題自動加編號

在Typora主題文件夾增加如下文件后,標題便自動加上了編號:

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

例如:

image-20230831193759446

但是導出的PDF中,目錄卻沒有編號:

image-20230831193913285

這是我使用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目錄就有編號了:

image-20230831194229178

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    中国少妇精品偷拍视频 | 三级高清有码在线观看| 免费在线观看激情小视频| 小草少妇视频免费看视频| 国产一区二区三区免费福利| 丝袜视频日本成人午夜视频| 又黄又硬又爽又色的视频 | 91日韩欧美在线视频| 国产视频一区二区三区四区| 国产一级特黄在线观看| 国产又粗又猛又大爽又黄| 成年人黄片大全在线观看| 午夜精品久久久免费视频 | 亚洲黄片在线免费小视频| 国产不卡最新在线视频| 暴力三级a特黄在线观看| 黑鬼糟蹋少妇资源在线观看| 国产欧美高清精品一区| 日韩在线一区中文字幕| 蜜桃av人妻精品一区二区三区| 色婷婷日本视频在线观看| 99热九九热这里只有精品| 亚洲视频一区二区久久久| 日韩成人高清免费在线| 亚洲天堂精品在线视频| 香蕉尹人视频在线精品| 五月婷婷亚洲综合一区| 精品一区二区三区三级视频| 中文字幕乱码亚洲三区| 日韩精品综合免费视频| 久久热这里只有精品视频| 视频一区二区三区自拍偷| 亚洲熟妇熟女久久精品| 欧美日韩国产另类一区二区| 欧美日韩乱一区二区三区| 在线观看日韩欧美综合黄片| 狠狠亚洲丁香综合久久| 东京热加勒比一区二区| 精品视频一区二区三区不卡| 亚洲中文字幕免费人妻| 午夜精品一区免费视频|