今天需要压缩一个pdf文件,由于pdf中涉及到了一些个人信息,不想使用在线的网站的压缩。下载了几个离线的压缩工具,大部分居然都需要收费,虽然后来找到了一个免费的工具搞定了这件事,不过想到后面可能还会碰到这样的事情,因此萌生了自己做一个在线压缩pdf的网站的想法。查了下相关资料,看到有一个ghostscript 工具可以来压缩pdf文件,基于这个工具做了一个简单的版本。 具体怎么做的就不说了,最终效果如下图所示。可以看到页面非常的简洁,支持同时上传多个pdf文件,适合个人使用。

在线压缩pdf

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

购买腾讯云轻量服务器

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

秒杀页面

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

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

启动Docker容器

购买了轻量服务器以后,就可以启动docker容器了。启动命令也很简单,只需要一行即可

1
2
3
4
5
docker run -d --name pdfcompress  \ 
--restart=always -p 8082:8082 \
-v /data/pdfcompress/input:/opt/pdfcompress/input \
-v /data/pdfcompress/output:/opt/pdfcompress/output \
mrlee326/pdfcompress

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

启动完毕后,就可以通过浏览器来访问我们的pdf在线压缩网站了。目前提供了三个选项【高质量】、【中质量】、【低质量】,分别对应ghostscript的prepress、ebook、screen。

在线压缩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 pdfcompress \
-v /data/pdfcompress/input:/opt/pdfcompress/input \
-v /data/pdfcompress/output:/opt/pdfcompress/output \
--env "VIRTUAL_HOST=pdf.bar.foo" \
--env "VIRTUAL_PORT=8082" \
--env "LETSENCRYPT_HOST=pdf.bar.foo" \
mrlee326/pdfcompress

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

总结

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