前言
在使用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; |