Skip to content

环境依赖 ​

Libreoffice 或 Openoffice ​

建议用 Libreoffice。 Openoffice 转换效果不是很完美。

作用 ​

对 office 文档进行转换处理。在我们程序中,主要用它来将 office 文档转成 PDF。

安装 ​

到 Libreoffice 官网下载相应系统最新版的 64 位版本的程序。

Windows ​

  1. 双击下载下来的 Libreoffice 程序,全部使用默认安装的方式进行安装,直接点击“下一步”安装完成。

  2. 将Libreoffice 加入到 Windows系统环境 Path 变量。 我这里Windows的安装路径是:

     C:\Program Files\LibreOffice

    加入到系统环境变量中的 Path 变量值:

     C:\Program Files\LibreOffice\program

Linux ​

建议所有 Linux 系统都用 Ubuntu。

直接在官网进行下载,或者使用如下命令一键安装:

[sudo] apt install libreoffice

Mac ​

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文件,查看文件中的中文是否存在乱码等。如果存在乱码,则朝以下两个方向去解决。

  1. 字符编码是否支持,比如 gbk 或者 utf-8 等

  2. 是否缺少相应的中文字体库。如 ubuntu 下,可以使用如下的方式进行安装:

     [sudo] apt install ttf-wqy-zenhei [sudo] apt install fonts-wqy-microhei

Calibre ​

calibre 是一款强大的电子书工具。

官网:https://calibre-ebook.com/

作用 ​

用来将 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文档,查看文档中是否存在乱码。如果存在乱码,则朝以下两个方向去解决。

  1. 字符编码是否支持,比如 gbk 或者 utf-8 等

  2. 是否缺少相应的中文字体库。如 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 pdf2svg

Mac ​

直接使用命令如下命令一键安装:

[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 imagemagick

Mac ​

[sudo] brew install imagemagick

是否安装成功 ​

  1. Windows下,在终端输入如下命令查看版本:

    magick --version

    如果能查看到版本号,则表示安装成功。 如果查询不到版本号或者提示找不到命令,则排查下 ImageMagick 是否已经安装,并且配置了系统环境变量。

  2. 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-utils

Mac ​

[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 文件中的文本内容没有出现乱码,则表示内容提取成功。如果出现乱码,需要从字符编码和中文字体排查。