搭建程序自己的在线PDF转换工具库-Stirling-PDF
又不知道忙了多久,今天闲暇时间看了一下Github,看到一个实用的开源项目Stirling-PDF。它可以对PDF文件执行各种操作,如拆分、合并、转换、重组、添加图像、旋转、压缩、签名等。
Stirling-PDF整合了众多实用的开源项目,下面,我们来了解一下Stirling-PDF的技术栈:
- Spring Boot + Thymeleaf
- PDFBox 开源项目地址:https://github.com/apache/pdfbox
- LibreOffice 项目地址:https://github.com/LibreOffice/core
- OcrMyPdf 开源项目地址:https://github.com/ocrmypdf/OCRmyPDF

- HTML, CSS, JavaScript
- Docker
- PDF.js 开源项目地址:https://github.com/mozilla/pdf.js
- PDF-LIB.js 开源项目地址: https://github.com/Hopding/pdf-lib
Stirling-PDF的功能:
- 查看和修改PDF-使用自定义查看排序和搜索功能查看多页PDF。加上页面上的编辑功能,如注释、绘制和添加文本和图像。(使用带有Joxit和Liberation.Liberation字体的PDF.js)
- 用于合并/拆分/旋转/移动PDF及其页面的完整交互式GUI。
- 将多个PDF合并到一个结果文件中。
- 按指定页码将PDF拆分为多个文件,或将所有页面提取为单个文件。
- 将PDF页面重新组织为不同的顺序。
- PDF旋转,PDF裁剪,分割PDF。
- 删除页面。
- 多页布局(将PDF格式设置为多页页面)。
- 按设置%缩放页面内容大小。
- 调整对比度。
- 将PDF转换为单个页面。
- 将PDF转换为图像和从图像转换PDF。
- 将任何常用文件转换为PDF(使用LibreOffice)。
- 将PDF转换为Word/Powerpoint/其他(使用LibreOffice)。
- 将HTML转换为PDF。
- 添加和删除密码。
- 更改/设置PDF权限。
- 添加水印。
- 认证/签署PDF。
- 添加/生成/写入签名。
- 修复PDF。
- 检测并删除空白页。
- 比较2个PDF并显示文本差异。
- 将图像添加到PDF中。
- 压缩PDF以减小其文件大小(使用OCRMyPDF)。
- 从PDF中提取图像。
- 从扫描中提取图像。
- 添加页码。
- 通过检测PDF标题文本自动重命名文件。
- PDF OCR(使用OCRMyPDF)。
- PDF/A转换(使用OCRMyPDF)。
- 获取PDF上的所有信息以查看或导出为JSON。
Stirling-PDF可编译部署(Linux)也可以Docker部署,自行编译部署相较麻烦,需要的环境比较多:
- Java 17 or later
- Gradle 7.0 or later (included within repo so not needed on server)
- Git
- Python 3.8 (with pip)
- Make
- GCC/G++
- Automake
- Autoconf
- libtool
- pkg-config
- zlib1g-dev
- libleptonica-dev
然后还要安装其它的依赖软件,如:
- libreoffice-core
- libreoffice-common
- libreoffice-writer
- libreoffice-calc
- libreoffice-impress
- python3-uno
- unoconv
- pngquant
- unpaper
- ocrmypdf
- opencv-python-headless
看着都头疼。详细步骤在https://github.com/Stirling-Tools/Stirling-PDF/blob/main/LocalRunGuide.md
用Docker则比较方便,Stirling PDF 的docker镜像y有三个版本,完整版、精简版和超精简版。这三个版本的区别如下:
| Technology | Ultra-Lite | Lite | Full |
|---|---|---|---|
| Java | ✔️ | ✔️ | ✔️ |
| JavaScript | ✔️ | ✔️ | ✔️ |
| Libre | ✔️ | ✔️ | |
| Python | ✔️ | ||
| OpenCV | ✔️ | ||
| OCRmyPDF | ✔️ |
| Operation | Ultra-Lite | Lite | Full |
|---|---|---|---|
| add-page-numbers | ✔️ | ✔️ | ✔️ |
| add-password | ✔️ | ✔️ | ✔️ |
| add-image | ✔️ | ✔️ | ✔️ |
| add-watermark | ✔️ | ✔️ | ✔️ |
| adjust-contrast | ✔️ | ✔️ | ✔️ |
| auto-split-pdf | ✔️ | ✔️ | ✔️ |
| auto-redact | ✔️ | ✔️ | ✔️ |
| auto-rename | ✔️ | ✔️ | ✔️ |
| cert-sign | ✔️ | ✔️ | ✔️ |
| crop | ✔️ | ✔️ | ✔️ |
| change-metadata | ✔️ | ✔️ | ✔️ |
| change-permissions | ✔️ | ✔️ | ✔️ |
| compare | ✔️ | ✔️ | ✔️ |
| extract-page | ✔️ | ✔️ | ✔️ |
| extract-images | ✔️ | ✔️ | ✔️ |
| flatten | ✔️ | ✔️ | ✔️ |
| get-info-on-pdf | ✔️ | ✔️ | ✔️ |
| img-to-pdf | ✔️ | ✔️ | ✔️ |
| markdown-to-pdf | ✔️ | ✔️ | ✔️ |
| merge-pdfs | ✔️ | ✔️ | ✔️ |
| multi-page-layout | ✔️ | ✔️ | ✔️ |
| overlay-pdf | ✔️ | ✔️ | ✔️ |
| pdf-organizer | ✔️ | ✔️ | ✔️ |
| pdf-to-csv | ✔️ | ✔️ | ✔️ |
| pdf-to-img | ✔️ | ✔️ | ✔️ |
| pdf-to-single-page | ✔️ | ✔️ | ✔️ |
| remove-pages | ✔️ | ✔️ | ✔️ |
| remove-password | ✔️ | ✔️ | ✔️ |
| rotate-pdf | ✔️ | ✔️ | ✔️ |
| sanitize-pdf | ✔️ | ✔️ | ✔️ |
| scale-pages | ✔️ | ✔️ | ✔️ |
| sign | ✔️ | ✔️ | ✔️ |
| show-javascript | ✔️ | ✔️ | ✔️ |
| split-by-size-or-count | ✔️ | ✔️ | ✔️ |
| split-pdf-by-sections | ✔️ | ✔️ | ✔️ |
| split-pdfs | ✔️ | ✔️ | ✔️ |
| file-to-pdf | ✔️ | ✔️ | |
| pdf-to-html | ✔️ | ✔️ | |
| pdf-to-presentation | ✔️ | ✔️ | |
| pdf-to-text | ✔️ | ✔️ | |
| pdf-to-word | ✔️ | ✔️ | |
| pdf-to-xml | ✔️ | ✔️ | |
| repair | ✔️ | ✔️ | |
| xlsx-to-pdf | ✔️ | ✔️ | |
| compress-pdf | ✔️ | ||
| extract-image-scans | ✔️ | ||
| ocr-pdf | ✔️ | ||
| pdf-to-pdfa | ✔️ | ||
| remove-blanks | ✔️ |
安装的时候,只需要运行一下命令即可
1 | docker run -d \ |
我们来看一下运行起来的效果


Stirling-PDF中的OCR是基于开源项目
OCRmyPDF开发,然而OCRmyPDF又依赖于Tesseract OCR,所以,要使用OCR功能便需要安装Tesseract OCR,Tesseract OCR也是一个开源项目,所以,Tesseract OCR如何安装?可以去 https://github.com/tesseract-ocr/ 看看。
搭建程序自己的在线PDF转换工具库-Stirling-PDF


