• 记录一次读取 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

  • 相关阅读:
    JS 数组去重复值
    git 上传项目 到github
    IntelliJ IDEA 创建maven 项目 并且,将springMVC 与Mybatis 整合
    easyui datagrid 动态添加columns属性
    codeMirror的简单使用,js比较文本差异(标注出增删改)
    sql注入
    Web For Pentester靶场
    一些数据库
    nginx的使用场景
    dockerfile
  • 原文地址:https://www.cnblogs.com/xyJen/p/15715474.html
Copyright © 2020-2023  润新知