zoukankan      html  css  js  c++  java
  • 记录一次读取 PDF 目录的经历

    读取 PDF

    想读取 PDF 的目录,想法大概分为两步:

    1.先读取PDF内容

    2.把读到的内容转为 xmind


    确认好两个大方向后,开始调研,是否有现成的轮子可以使用。

    npm 上搜一搜,pdf、pdf reader, etc


    果然,名列前茅的是依托 Mozilla 的 pdfjs-dist,点进 github 的 example 看一看。 果然有PDF读取的 demo,参(zhao)考(chao)下,改吧改吧,改成符合自己预期的读取逻辑。

    值得一提的是,这个库最方便的是可以指定读取的起止页数。这样也不用考虑用 buffer 一点点读了。赞


    把读到内容写入文件中,然后发现,读取的效果并不是百分百完美。

    比如:xmind的内容并不需要页数、目录中的 ... 格式,

    除此之外,识别的内容也不是百分百完美(果然做的完美都商业化了 -_-||),1 读成 I、l,设置 读成 设直


    我就纳了闷了,读错的情况并不是百分百,有的目录也读对了,不知道为啥哪些个出错的是为啥。我也没深入看源码了,就先为了完成功能看了看源码里的 api

    所以,读完的文件,除了有规律可循的出错,可以做一波数据清洗,为了保证效果,最后还需要进行一波人工校对的。当然,这个工作,比手工敲一遍目录要轻松很多,成本也可接受了。

    PDF 读取就告一段落了。源码我会附录在文章末尾。可以去看源码,很简单,就不再赘述。

    ===================================================================

    生成 xmind

    再来一遍,npm 上搜一搜, xmind 官方有提供 SDK for JavaScript,美汁汁儿。去看看 github 中 example 的例子。

    一个 xmind 内容生成的步骤:

    1. new Workbook
    2. new Topic
    3. new Zipper
    4. 通过 TopicInstance 的 on、add 方法把内容挂载在内存中
    5. 最后用 zipperInstance.save 把 TopicInstance 的内容生成为 xmind 文件

    总结:

    本次小实验并不具备普适性,只能对具体的目录如:


    读取 PDF 内容这个都是一样的。数据清洗、生成最后的目录并不通用。纯满足个人需求了。

    可以给 PDF 读取需求的童鞋一点思路。

    That's all.

    附上源码链接:源码地址

    如果可以,动动发财的小手点个 star 也是可以的,thx

  • 相关阅读:
    在 Students 的 Index 页面增加列标题链接(排序),分页,过滤和分组功能
    Contoso 大学
    如何搭建MVC + EF 框架
    EF与手写Model的区别以及联系
    報錯:One or more validation errors were detected during model generation:System.Data.Edm.EdmEntityType: : EntityType 'Movie' has no key
    Oracle四舍五入,向上取整,向下取整
    datagrid中设置编辑,删除列是否可以访问
    datagrid中设置编辑,删除列是否可以访问
    C#实现打印
    C#中rpt的数据类型和Oracle中数据类型的匹配
  • 原文地址:https://www.cnblogs.com/xyJen/p/15715474.html
Copyright © 2011-2022 走看看