搭建程序自己的在线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