前两天需要压缩一个pdf文件,由于pdf中涉及到了一些个人信息,不想使用在线的网站的压缩。下载了几个离线的压缩工具,大部分居然都需要收费,虽然后来找到了一个免费的工具搞定了这件事,不过想到后面可能还会碰到这样的事情,因此萌生了自己做一个在线压缩pdf的网站的想法。查阅了相关资料,最后借助ghostscript 实现了我的需求。不过有小伙伴觉得网站功能太单调了,还有小伙伴想要OCR的功能,我看了一下ghostscript的文档,发现ghostscript是支持OCR的,那还等什么,集成就完事了。如果小伙伴们觉得有用的话,给我的仓库https://github.com/lixiaofei123/pdftoolbox点一个star吧。由于新的工具网站不仅仅是只支持pdf压缩,现在也支持OCR,后面可能还会增加别的功能,因此我将原来的pdfcomress名字改成了pdftoolbox。

下面是网站的首页,可以看到,是非常简洁的。

网站首页

下面讲一下怎么在腾讯云轻量服务器部署这个pdf在线工具箱,有兴趣的小伙伴可以玩一下

购买腾讯云轻量服务器

既然要在轻量服务器上部署,那么就需要先购买一个轻量服务器。现在轻量服务器在做活动,2核4G的配置一年只需要74元,详情可以点击这个链接了解。如下图所示,点击购买即可

秒杀页面

然后选择【地域】和【镜像】,地域的话选择距离自己最近的地域,我们后面要使用Docker进行安装,因此这里直接选择【Docker基础镜像】,下面系统可以选一个自己熟悉的,如果无所谓的话,就保持默认好了。

然后提交订单并付款,稍等一会,我们的轻量服务器实例就创建成功了。为了方便操作,需要用终端来连接服务器,这个涉及到一些配置,官方文档讲的很清楚,可以自己看着操作一下。后面的步骤默认在终端上操作。

启动Docker容器

部署一个应用最简单的方法,当然使用docker镜像了。今天的教程也不例外,我将pdf工具箱直接做成了镜像,里面已经封装好了相应的环境。因此,就不需要那么麻烦的配置环境了。只需要一行命令就可以搞定。

1
2
3
mkdir -p /data/pdftoolbox/input
mkdir -p /data/pdftoolbox/output
docker run -d --name pdftoolbox --restart=always -p 8082:8082 -v /data/pdftoolbox/input:/opt/pdftoolbox/input -v /data/pdftoolbox/output:/opt/pdftoolbox/output mrlee326/pdftoolbox

其中//opt/pdftoolbox/input是用来放置用户上传文件的目录,/opt/pdftoolbox/output是用来放转换后的文件的目录,建议将其挂载在宿主机上,这样就方便后面清理文件了。有能力的话,可以自己写一个定时脚本来清理过期的文件。

启动完毕后,就可以通过浏览器来访问我们的pdf在线工具箱了。目前提供了两个功能,一个是pdf压缩、一个是pdf OCR

PDF压缩

先来试用一下pdf压缩功能。在低质量模式下,可以将pdf的体积压缩到原来的1/4大小。

pdf压缩

pdf压缩主要针对的是包含图片比较多的pdf,如果原pdf中基本上都是文字的话,那么压缩的效果就不太理想。因为基本上没压缩的空间了。

PDF OCR

然后就来试一下pdf的文字提取吧。这个功能同样是基于ghostscript来实现的。激活【PDF文字提取】选项,然后根据需要来选择额外支持的语言,目前内部默认支持简体中文和英文,因此基本上不需要选择。点击上传文件,就会自动进行转换,如果机器的性能比较低的话,这一步可能会比较慢,请耐心等待几分钟。等下面的进度条全部走完,并出现【点击下载】按钮,说明转换完毕,这时候点击下载即可。

文字提取

转换结果

证书配置

如果想要https证书的话,可以使用acme-companion容器来进行证书的自动颁发。这个操作起来也很简单。只需要额外启动两个容器即可

1
2
3
4
5
6
7
8
9
docker run --detach \
--name nginx-proxy \
--publish 80:80 \
--publish 443:443 \
--volume certs:/etc/nginx/certs \
--volume vhost:/etc/nginx/vhost.d \
--volume html:/usr/share/nginx/html \
--volume /var/run/docker.sock:/tmp/docker.sock:ro \
nginxproxy/nginx-proxy
1
2
3
4
5
6
7
docker run --detach \
--name nginx-proxy-acme \
--volumes-from nginx-proxy \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
--volume acme:/etc/acme.sh \
--env "DEFAULT_EMAIL=mail@yourdomain.tld" \
nginxproxy/acme-companion

最后启动pdfcompress。注意多了几个环境变量VIRTUAL_HOST、VIRTUAL_PORT、ETSENCRYPT_HOST,同时需要提前将pdf.bar.foo解析到轻量服务器的ip上。

1
2
3
4
5
6
7
8
docker run --detach \
--restart=always --name pdftoolbox \
-v /data/pdftoolbox/input:/opt/pdftoolbox/input \
-v /data/pdftoolbox/output:/opt/pdftoolbox/output \
--env "VIRTUAL_HOST=pdf.bar.foo" \
--env "VIRTUAL_PORT=8082" \
--env "LETSENCRYPT_HOST=pdf.bar.foo" \
mrlee326/pdftoolbox

然后通过浏览器访问https://pdf.bar.foo,就可以看到绿色的小锁了,表示我们的网站是安全的了。

总结

通过上面的过程,我们就有了一个属于自己的在线pdf工具箱网站,这样也不用担心自己的个人信息被别人保存,同时更换电脑的话也不需要重新安装软件。如果小伙伴们觉得有用的话,给我的仓库https://github.com/lixiaofei123/pdftoolbox点一个star吧