首页 PDF目录生成
文章
取消

PDF目录生成

pdf.tocgen使用

工具链:

pdfxmeta(提取元数据)+pdftocgen(生成目标表)+pdftocio(添加目录)。

image-20230213215046883

官网:Krasjet/pdf.tocgen: A CLI toolset to generate table of contents for PDF files automatically. (github.com)

测试来源:为 PDF 增加目录 - 少数派 (sspai.com)

测试案例:

  1. pdfxmeta提取元数据

    1
    2
    3
    
    pdfxmeta.exe -p 1 -a 1 .\30堂证券投资通识课_无目录版.pdf "证券投资基础"
    pdfxmeta -p 1 -a 2 30堂证券投资通识课_无目录版.pdf "⼀、了解并掌握证券投资这⻔艺术"
    pdfxmeta -p 1 -a 3 30堂证券投资通识课_无目录版.pdf "投资者适应性"
    

    拷贝输出。如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    
    [[heading]]
    # 第⼀讲 证券投资基础
    level = 1
    greedy = true
    font.name = "Unnamed-T3"
    font.size = 24.000001907348633
    # font.size_tolerance = 1e-5
    # font.color = 0x24292e
    # font.superscript = false
    # font.italic = false
    # font.serif = false
    # font.monospace = false
    # font.bold = false
    # bbox.left = 50.5
    # bbox.top = 44.13671875
    # bbox.right = 271.6211242675781
    # bbox.bottom = 72.80078125
    # bbox.tolerance = 1e-5
       
    [[heading]]
    # ⼀、了解并掌握证券投资这⻔艺术🐰
    level = 2
    greedy = true
    font.name = "Unnamed-T3"
    font.size = 18.000001907348633
    # font.size_tolerance = 1e-5
    # font.color = 0x24292e
    # font.superscript = false
    # font.italic = false
    # font.serif = false
    # font.monospace = false
    # font.bold = false
    # bbox.left = 50.5
    # bbox.top = 99.22750854492188
    # bbox.right = 338.5000305175781
    # bbox.bottom = 125.1911849975586
    # bbox.tolerance = 1e-5
    [[heading]]
    # 🍼 投资者适应性
    level = 3
    greedy = true
    font.name = "Unnamed-T3"
    font.size = 15.000000953674316
    # font.size_tolerance = 1e-5
    # font.color = 0x24292e
    # font.superscript = false
    # font.italic = false
    # font.serif = false
    # font.monospace = false
    # font.bold = false
    # bbox.left = 50.5
    # bbox.top = 145.73126220703125
    # bbox.right = 158.927734375
    # bbox.bottom = 164.37550354003906
    # bbox.tolerance = 1e-5
    
  2. 使用元数据,扫描PDF获取目录信息:

    1
    2
    3
    4
    5
    6
    
    # windows编码问题,ps终端写法
    $env:PYTHONUTF8=1 # CMD:Set PYTHONUTF8=1
       
    # ps管道写法
    get-Content .\recipe.toml | pdftocgen.exe .\30堂证券投资通识课_无目录版.pdf # CMD:pdftocgen 30堂证券投资通识课_无目录版.pdf < recipe.toml
    # 直接用管道输出文件编码为utf16,用不了,还是输出到终端自己拷贝
    

    拷贝输出,效果:

    "第⼀讲 证券投资基础" 1
        "⼀、了解并掌握证券投资这⻔艺术🐰" 1
            "🍼 投资者适应性" 1
            "🍼 追涨杀跌为哪般" 1
            "🍼 如何培养⾦融嗅觉" 1
        "⼆、股票投资ABC🐰" 1
            "🍄 中国股市乱象" 1
            "🍄 战前总动员" 2
            "🍄 中国股票市场的特殊性" 3
            "🍄 中国股市的超凡魅⼒" 3
            "🍄 选股ABC⸺⾼⼿教你在股市淘⾦" 3
        "三、基⾦投资ABC🐰" 3
            "🔔 基⾦⾼⼿具备什么特质" 3
            "🔔 我国基⺠为何亏钱" 3
            "🔔 基⺠和股⺠的投资⽐较和市场认知" 4
            "🔔 如何⽤专业的基⾦经理帮你理财" 4
    "第⼆讲 证券投资理论" 4
        "⼀、资本资产定价模型🍑" 4
            "🎯证券投资理论对中国股票市场有什么借鉴意义" 4
            "🎯 资本资产定价模型的假设条件" 4
            "🎯资本市场线" 5
            "🎯资本资产定价模型在实际投资中的应⽤β策略" 6
            "🎯资本资产定价模型的局限性" 6
        "⼆、有效市场假说🍑" 7
            "🎑有效市场假说和有效市场类型" 7
            "🎑有效市场中的投资策略分析" 7
            "🎑有效市场理论的启示" 8
        "三、资产配置策略🍑" 8
            "🦐资产配置概述" 8
            "🦐常⻅的战略资产配置的执⾏⽅式" 8
            "🦐战术资产配置" 9
            "🦐动态资产配置" 9
            ...
    
  3. 导入目录到PDF

    1
    
    pdftocio -t toc.txt -o out.pdf 30堂证券投资通识课_无目录版.pdf
    

问题

编码问题注意一下,都用utf8。在前面注意到了。看到有解决这个问题的PR,但是好像没merge。

标题文字是乱码

另外,在第一个Recipe的查找,发现我的PDF有些字找不到。从PDF复制文字出来,也是现实乱码。相当于这部分字能看到,但是扫描PDF时识别不出来的。这也就导致pdfxmeta扫描元数据时没办法用最后的搜索的文字。

解决方案:

  1. 找标题中带英文的文字,搜索这个。英文肯定不会乱码。
  2. 不使用搜索文字功能,去除最后一个参数,直接pdfxmete -p 1 -a 1 xx.pdf。然后慢慢找标题那段。一般来说标题在最前面,就是最前面那段。

当然了,前面pdfmeta扫不到,后面生成目录也扫不到,也是乱码。这个暂时就只能手输了。

其他工具链

像标准的电子书(即由纸质版而来),一般会有标准的目录,能够直接找到。

相应做法:自动获取书签软件V0505+PdgCntEditor。参考:自动获取书签软件V0505+PdgCntEditor详解_小林9的博客-CSDN博客_书签获取软件

本文由作者按照 CC BY 4.0 进行授权

拥抱新技术-AI工具使用及跟踪

qmake中实现拷贝文件