前言
在使用Electron客户端的时候,文档转换是个问题,没有原生的转换库,这里只能只能通过WPS进行转换。
利用WPS进行文档转换
注意
安装的时候需要电脑上的
Python版本为2.7,否则编译报错。
设置环境
1  | npm config set python python2.7  | 
安装
1  | npm install winax --msvs_version=2017  | 
使用
1  | var winax = require('winax');  | 
文档格式转换
文档格式转换 支持 wps、wpt、doc、docx、dot、txt等所有文档格式文件
1  | var winax = require('winax');  | 
幻灯片格式转换
幻灯片格式转换 支持ppt、pps、pptx、ppsx、dps、dpt、pot、uof
1  | var winax = require('winax');  | 
表格格式转换
表格格式转换 支持et、ett、xls、xlsx、xlt、uof、prn、csv
1  | var winax = require('winax');  | 
PDF转图片
方式1(不推荐)
注意
这种方式 会出现转换的文字乱码。
安装
1  | npm i pdf-img-convert  | 
示例
1  | let pdf2img = require('pdf-img-convert');  | 
如果node-canvas无法安装
原因是GTK无法下载
win64下载地址(推荐):http://ftp.gnome.org/pub/gnome/binaries/win64/gtk+/2.22/gtk+-bundle_2.22.1-20101229_win64.zip
下载GTK包并解压在C:\GTK目录下
重新安装即可
1  | npm i node-canvas  | 
方式2 Ghostscript(推荐)
这种方式效果较好,就是引用的exe和dll会增加将近11M。
在gs.exe的同级目录下运行下面的命令
获取页数
1  | ./gs -q -dNODISPLAY -c "(D:/Project/Node/Pdf2PngforWindows/doc/1.pdf) (r) file runpdfbegin pdfpagecount = quit"  | 
转换某页
1  | ./gs -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT -sDEVICE=png16m -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r100 -dFirstPage=1 -dLastPage=1 -sOutputFile=C:\Users\ADMINI~1\AppData\Local\Temp\tmp-8468uujQmrsdRJ21.png "D:\Project\Node\Pdf2PngforWindows/doc/1.pdf"  | 
我们就可以根据页数进行逐页转换。
相关参数如下说明:
-dQUIET, 安静的意思,指代执行过程中尽可能少的输出日志等信息。(也可以简写为-q)-dNOSAFER, 通过命令行运行-dBATCH, 执行到最后一页后退出-dNOPAUSE, 每一页转换之间没有停顿-dNOPROMPT, 没有相关提示-dFirstPage=1, 从第几页开始-dLastPage=5, 到第几页结束-sDEVICE=png16m, 转换输出的文件类型装置,默认值为x11alpha-g720x1280, 图片像素(-g<width>x<height>),一般不指定,使用默认输出-r300, 图片分辨率(即图片解析度为300dpi),默认值好像是72-sOutputFile=/opt/shanhy/error1png/%d.png, 图片输出路径,使用%d或%ld输出页数
工具类
pdf2png.js
1  | let exec = require('child_process').exec;  | 
调用
1  | const pdf2png = require("./lib/pdf2png.js");  | 
示例代码
https://gitee.com/psvmc/pdf2png_win
文件服务器
安装依赖
1  | npm install connect  | 
代码
1  | var connect = require("connect");  | 
WS服务器
1  | const WebSocketServer = require('ws').Server;  |