OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

Linux下用node.js提取Word(doc/docx)/PDF文本内容


分享到
分类 JS学习   关键字 JavaScript   发布 kris  1497519067670
注意 转载须保留原文链接,译文链接,作者译者等信息。  
想要做全文搜索引擎,则需要将word/pdf等文档内容提取出来。对于pdf有xpdf等一些开源方案。
但Word文档的情况则会复杂一些。

提取PDF文本内容

 XPDF是一个免费开源的软件,用于显示PDF文件,并可将pdf转换成文字图片等,同样支持Windows版。在Debian Linux上安装非常简单:

apt-get install xpdf
我们这里只使用pdftotext这个功能,直接输入可查看帮助:

root@raspberrypi:/var/www# pdftotext
pdftotext version 0.26.5
Copyright 2005-2014 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011 Glyph & Cog, LLC
Usage: pdftotext [options] <PDF-file> [<text-file>]
  -f <int>          : first page to convert
  -l <int>          : last page to convert
  -r <fp>           : resolution, in DPI (default is 72)
  -x <int>          : x-coordinate of the crop area top left corner
  -y <int>          : y-coordinate of the crop area top left corner
  -W <int>          : width of crop area in pixels (default is 0)
  -H <int>          : height of crop area in pixels (default is 0)
  -layout           : maintain original physical layout
  -fixed <fp>       : assume fixed-pitch (or tabular) text
  -raw              : keep strings in content stream order
  -htmlmeta         : generate a simple HTML file, including the meta information
  -enc <string>     : output text encoding name
  -listenc          : list available encodings
  -eol <string>     : output end-of-line convention (unix, dos, or mac)
  -nopgbrk          : don't insert page breaks between pages
  -bbox             : output bounding box for each word and page size to html.  Sets -htmlmeta
  -opw <string>     : owner password (for encrypted files)
  -upw <string>     : user password (for encrypted files)
  -q                : don't print any messages or errors
  -v                : print copyright and version info
  -h                : print usage information
  -help             : print usage information
  --help            : print usage information
  -?                : print usage information
测试一下:

root@raspberrypi:/var/www# pdftotext onceai.pdf onceai.txt
root@raspberrypi:/var/www# cat onceai.txt
产品介绍 顽石智能科技(上海)有限公司
....

然后在node.js中使用 child_process直接调用此命令即可,pdftotext会将内容输出以文本文件中,可能需要多一些操作。具体代码略。

用antiword提取 .doc 的内容


我们这里使用了 antiword 开源软件,来提取word2003以前版本的内容,安装同样非常简单:

apt-get install antiword
查看帮助:
root@raspberrypi:/var/www# antiword
    Name: antiword
    Purpose: Display MS-Word files
    Author: (C) 1998-2005 Adri van Os
    Version: 0.37  (21 Oct 2005)
    Status: GNU General Public License
    Usage: antiword [switches] wordfile1 [wordfile2 ...]
    Switches: [-f|-t|-a papersize|-p papersize|-x dtd][-m mapping][-w #][-i #][-Ls]
        -f formatted text output
        -t text output (default)
        -a <paper size name> Adobe PDF output
        -p <paper size name> PostScript output
           paper size like: a4, letter or legal
        -x <dtd> XML output
           like: db (DocBook)
        -m <mapping> character mapping file
        -w <width> in characters of text output
        -i <level> image level (PostScript only)
        -L use landscape mode (PostScript only)
        -r Show removed text
        -s Show hidden (by Word) text

antiword直接将word内容输出到了console中:

root@raspberrypi:/var/www# antiword spec.doc

SYNC Mobile – Ford APA
Project Number: DFYST
Requirements Specification
同样在node.js用child_process调用此命令即可。

解析提取.docx 的内容

对于 docx 文档来说,因基本身就是一个zip文件,只需要在node.js先将其解压,再解析 text.docx\word\document.xml 文件即可。Github上也有些将docx解析成html的库,如: https://github.com/mwilliamson/mammoth.js  https://github.com/lalalic/docx2html  等。

上述两个项目,略显复杂,我们也可以直接使用 unzip 模块,来提取docx/ xlst/ pptx 等存放内容的文件。请参考:

node.js使用unzip解压zip包指定文件,提取word/excel(docx/pptx/xlsx)文本内容


社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. Node.js网页抓取:一个最简单的http请求客户端示例(request client)
  2. Docker改名Moby:急于商业化陷入品牌更名乱象
  3. Java已快过时?斯坦福大学将JavaScript作为计算机科学入门课
  4. Node.JS用Socket实现FTP Server服务器和Client客户端
  5. "永恒之蓝"比特币勒索病毒(WannaCry)的攻击原理
  6. Node.JS更改Windows注册表regedit的几种方法
  7. Phantom.js维护者Slobodin退出,著名自动化测试与智能爬虫框架前景不明
  8. Debian下设置Linux Shell脚本开机自动启动Node.JS进程
  9. 用纯Node.JS弹出Windows系统消息提示框(MessageBox)
  10. Node.JS如何调用Chrome打开浏览器链接地址
  11. AirJD-简单好用的免费建站工具

 相关阅读 - JS学习
  1. 用JavaScript获取当月第一天和最后一天
  2. Node.JSv8的5个新特性:支持string padding与async/await和object参数省略
  3. node.js中fs.stat里的atime,mtime,ctime,birthtime在debian下的更新规则与区别
  4. decodeURIComponent有个BUG,当浏览器请求地址含%+数字时,会解析错误
  5. NodeJS的DNS使用:域名解析,MX记录查询,SPF反垃圾邮件测试
  6. Node.JS如何调用Chrome打开浏览器链接地址
  7. 用纯Node.JS弹出Windows系统消息提示框(MessageBox)
  8. 利用Windows注册表将你的Node.JS程序添加到右健菜单直接运行
  9. JavaScript中splice与slice的区别、数组的复制以及在指定位置添加删除元素
  10. Node.JS中如何判断递归嵌套的所有回调函数已经执行完毕,以读取目录下所有文件为例:计数比Promise方式快将近一倍

 关键字 - JavaScript
  1. 如何用CSS将select/option文本居中或居右对齐
  2. 给checkbox选择框设置不选中时的值
  3. 用原生HTML5控件实现输入框自动提示(下拉列表补全)功能
  4. JavaScript中怪异的地方
  5. 在JavaScript中创建命名空间的几种写法
  6. JavaScript中的继承,构造函数以及new关键字的作用
  7. 纽约时报使用Html5 WebRTC记录访问者IP地址
  8. 正则中test、exec、match的简单区别,以及括号的用法
  9. NativeScript的工作原理:用JavaScript调用原生API实现跨平台
  10. 2015年的JavaScript:Angular之类的框架将被库取代

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号