环境依赖
Libreoffice 或 Openoffice
建议用 Libreoffice。 Openoffice 转换效果不是很完美。
作用
对 office 文档进行转换处理。在我们程序中,主要用它来将 office 文档转成 PDF。
安装
到 Libreoffice 官网下载相应系统最新版的 64 位版本的程序。
Windows
双击下载下来的 Libreoffice 程序,全部使用默认安装的方式进行安装,直接点击“下一步”安装完成。
将Libreoffice 加入到 Windows系统环境 Path 变量。 我这里Windows的安装路径是:
C:\Program Files\LibreOffice加入到系统环境变量中的 Path 变量值:
C:\Program Files\LibreOffice\program
Linux
建议所有
Linux系统都用 Ubuntu。
直接在官网进行下载,或者使用如下命令一键安装:
[sudo] apt install libreofficeMac
Mac 下,可直接从官网下载 Mac 下的软件包进行一键安装。或者用 brew 命令一键安装:
[sudo] brew install libreoffice是否安装成功
在终端执行如下命令,查看版本号,能查到版本号,即表示安装成功。
soffice --version如果查看不到版本号或者提示命令不存在,请检查 Libreoffice 是否已经安装并且配置了 Libreoffice 的系统环境变量。
如果是Linux或者Mac系统下使用命令一键安装的方式的话,在安装的过程中就已经自动添加进去了。
测试
Libreoffice在进行文档转换的过程中,转换出来的文档可能会出现乱码,所以需要在正式使用之前,把可能存在的乱码问题进行测试和解决。
创建一个中英文内容的.doc 文档,用如下命令将文档转成 PDF:
[sudo] soffice --headless --invisible --convert-to pdf example.doc转换成功之后,会在当前目录下生成一个 example.pdf 的文件,然后打开转换后的PDF文件,查看文件中的中文是否存在乱码等。如果存在乱码,则朝以下两个方向去解决。
字符编码是否支持,比如 gbk 或者 utf-8 等
是否缺少相应的中文字体库。如 ubuntu 下,可以使用如下的方式进行安装:
[sudo] apt install ttf-wqy-zenhei [sudo] apt install fonts-wqy-microhei
Calibre
calibre 是一款强大的电子书工具。
作用
用来将 mobi、epub、txt 等格式的电子书转成 PDF 文档,以及在 Windows 下缺少 pdftotext 的工具的时候,从 PDF 文档中提取 txt 内容。
安装
到 Calibre 官网,下载相应系统最新版的 calibre。
下载地址:https://calibre-ebook.com/download
Windows
将下载下来的 calibre 二进制exe 文件,直接点击运行安装,采用默认安装的方式即可。
安装完成之后,将 calibre 的路径加入到 Windows 系统 Path 环境变量。
这里,我的安装路径是:
C:\Program Files\Calibre2所以这里,我将上面的路径加入到系统的 Path 系统变量中。
Linux
用的 Ubuntu 系统,安装最新版的Calibre。
安装命令如下:
sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.py | sudo python -c "import sys; main=lambda:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main()"国内的安装速度非常非常慢…请耐心等待…
Mac
Mac 下,直接从官网下载 Mac 下的安装包点击安装即可。
是否安装成功
在系统终端执行如下命令查看版本号,能查询到程序版本,即表示安装成功:
ebook-convert --version如果查看不到版本号,请确保 calibre 已经安装,并且将安装目录加入到了系统环境变量之中。
一般情况下,Mac 和 Ubuntu,在安装的时候,已经自动将安装路径加入到了系统环境变量,Windows需要手动添加。
如果不知道怎么添加,请借助搜索引擎查看教程,这里不赘述。
测试
创建一个中英文内容的txt文档,如 example.txt,通过如下命令将文档转成PDF。
ebook-convert example.txt example.pdf如果转换失败,请根据失败的提示对错误进行处理。
如果转换成功,则打开PDF文档,查看文档中是否存在乱码。如果存在乱码,则朝以下两个方向去解决。
字符编码是否支持,比如 gbk 或者 utf-8 等
是否缺少相应的中文字体库。如 ubuntu 下,可以使用如下的方式进行安装:
[sudo] apt install ttf-wqy-zenhei [sudo] apt install fonts-wqy-microhei
pdf2svg
作用
用来将 PDF 转成 svg 文件,以供文档浏览。
安装
Windows
到这里,下载Windows版本:https://github.com/TruthHun/pdf2svg-windows/releases
解压之后,将 64位 的版本直接放到C盘。
我这里,pdf2svg 的位置如下:
C:\pdf2svg然后把这个路径加入到 Windows系统的 Path 环境变量中。
Linux
直接使用如下命令进行一键安装:
[sudo] apt install pdf2svgMac
直接使用命令如下命令一键安装:
[sudo] brew install pdf2svg是否安装成功
在终端执行如下命令:
pdf2svg如果显示如下结果,则表示安装成功:
Usage: pdf2svg <in file.pdf> <out file.svg> [<page no>]如果显示的用法不是想上面提示的那样,则表示您安装的版本不对,请通过搜索引擎找办法进行解决。
如果提示命令不存在,则请确保程序已经安装并且加入到了系统环境变量之中。
测试
随便找来一个中英文内容的PDF文档,比如example.pdf文件,通过如下命令,将PDF文档转svg:
[sudo] pdf2svg example.pdf example-no1.svg如果转换失败,请排查 pdf2svg 是否已经安装,并且配置了系统环境变量。
如果转成成功,则查看svg中是否存在乱码,存在乱码,则从系统字符编码以及中文字体两个方向入手进行着手解决。
ImageMagick
作用
将文档的转化的首个svg图片转成jpg图片,用于作为文档的封面。
安装
到ImageMagick官网,下载相应系统版本的软件。
下载地址: https://www.imagemagick.org/script/download.php
Windows
双击下载下来的 ImageMagick 二进制 exe 文件,采用默认方式进行安装即可。
在这里,我的安装路径如下:
C:\Program Files\ImageMagick-7.0.8-Q16则把上述路径,添加到系统的环境变量之中。
Linux
[sudo] apt install imagemagickMac
[sudo] brew install imagemagick是否安装成功
Windows下,在终端输入如下命令查看版本:
magick --version如果能查看到版本号,则表示安装成功。 如果查询不到版本号或者提示找不到命令,则排查下 ImageMagick 是否已经安装,并且配置了系统环境变量。
Linux/Mac 下,在终端执行如下命令查看版本:
convert --version如果能查询到版本号,则表示安装成功。 如果查询不到版本号或者提示找不到命令,则排查下 ImageMagick 是否已经安装,并且配置了系统环境变量。一般情况下,Linux和Mac下使用命令的方式进行一键安装的话,会自动把软件加入到系统环境变量之中。
非必需] svgo
作用 去除 svg 文件中的多余字符,减少文件体积。一般情况下能减少 50% 左右的文件大小。
这里的svgo,指的是 node.js 的一个库,如果您需要使用的话,需要安装 node.js,并使用如下 npm 方式进行安装:
[sudo] npm install svgo -g在系统终端输入如下命令:
svgo如果出现如下内容,则表示安装成功:
Nodejs-based tool for optimizing SVG vector graphics filesUsage: svgo [OPTIONS] [ARGS]Options: -h, --help : Help -v, --version : Version -i INPUT, --input=INPUT : Input file, "-" for STDIN -s STRING, --string=STRING : Input SVG data string -f FOLDER, --folder=FOLDER : Input folder, optimize and rewrite all *.svg files -o OUTPUT, --output=OUTPUT : Output file or folder (by default the same as the input), "-" for STDOUT -p PRECISION, --precision=PRECISION : Set number of digits in the fractional part, overrides plugins params --config=CONFIG : Config file or JSON string to extend or replace default --disable=DISABLE : Disable plugin by name --enable=ENABLE : Enable plugin by name --datauri=DATAURI : Output as Data URI string (base64, URI encoded or unencoded) --multipass : Enable multipass --pretty : Make SVG pretty printed --indent=INDENT : Indent number when pretty printing SVGs -q, --quiet : Only output error messages, not regular status messages --show-plugins : Show available plugins and exitArguments: INPUT : Alias to --input OUTPUT : Alias to --output因为 svgo 是非必需的,所以这里不深入,因为我们使用了性能更出色的Go语言的库:
https://github.com/tdewolff/minify测试的时候,性能大概将近是 svgo 的 几十倍,压缩的svg体积,出于svg文件质量的考虑,只压缩到了 原 svg 文件体积的 60% 左右。
Minio
Minio 是一个开源的云存储方案,部署文档,安装和部署文档,请看这里:《Minio Cookbook 中文版》
目前 DocHub 2.2 开始,已经支持 百度云、腾讯云、阿里云、华为云、七牛云、又拍云 等的对象存储服务,如果您不准备进行本地化部署,则不需要安装 Minio.
建议把 Minio 也放到系统环境变量中去..
Minio 启动命令参考:
minio server ./cloudstore执行命令之后,一般会出现类似如下内容:
Endpoint: http://169.254.106.253:9000 http://192.168.42.91:9000 http://192.168.56.1:9000 http://127.0.0.1:9000 AccessKey: C7XHAPB2ARLHM6PNWIWPSecretKey: y9GRGGDcpLusB7oasti3eXcw4gyqSYyjII1lBNG4Browser Access: http://169.254.106.253:9000 http://192.168.42.91:9000 http://192.168.56.1:9000 http://127.0.0.1:9000Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide $ mc.exe config host add myminio http://169.254.106.253:9000 C7XHAPB2ARLHM6PNWIWP y9GRGGDcpLusB7oasti3eXcw4gyqSYyjII1lBNG4Object API (Amazon S3 compatible): Go: https://docs.minio.io/docs/golang-client-quickstart-guide Java: https://docs.minio.io/docs/java-client-quickstart-guide Python: https://docs.minio.io/docs/python-client-quickstart-guide JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide .NET: https://docs.minio.io/docs/dotnet-client-quickstart-guide在我们的 DocHub 程序中,需要用到上面的AccessKey和SecretKey,以及 Endpoint
pdftotext
作用
提取 PDF 中的文本内容
安装
Windows
Windows 下不需要安装,因为我目前也没有发现存在Windows的版本。
不安装这个工具,对程序有影响,但是影响不大,因为从PDF中提取txt文本内容,还可以使用 calibre 进行提取。
Linux
[sudo] apt install poppler-utilsMac
[sudo] brew install poppler-utils是否安装成功
执行如下命令:
pdftotext --help看到如下结果,则表示安装成功。
pdftotext --help------pdftotext version 0.41.0Copyright 2005-2016 The Poppler Developers - http://poppler.freedesktop.orgCopyright 1996-2011 Glyph & Cog, LLCUsage: 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 -bbox-layout : like -bbox but with extra layout bounding box data. 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测试
使用如下命令,测试文本提取结果。
pdftotext -f 1 -l 5 example.pdf example.txt如果提取到 txt 文件中的文本内容没有出现乱码,则表示内容提取成功。如果出现乱码,需要从字符编码和中文字体排查。
