开源PDF工具库Stirling-PDF如何安装部署和使用?

Stirling PDF是一个使用 Docker 的强大的、本地托管的、基于 Web 的 PDF 操作工具,支持27种语言,它使您能够对PDF文件进行各种操作,包括分割、合并、转换、重组、添加图像、旋转、压缩等。这个本地托管的 Web 应用程序已发展为包含一组全面的功能,可满足您的所有 PDF 要求。

Stirling PDF部署分为两种,本地部署和Docker部署,下面详细安装和使用教程来了。

(1)本地部署(无Docker)

要在没有Docker/Podman 的情况下运行应用程序,您需要手动安装所有依赖项并构建必要的组件。

请注意,某些依赖项可能并非在所有 Linux 发行版的标准存储库中都可用,并且可能需要额外的步骤来安装。

以下假设您对在操作系统中使用命令行界面有基本的了解。

它应该适用于大多数 Linux 发行版和 MacOS。对于 Windows,您可能需要使用 Windows Subsystem for Linux (WSL) 来执行某些步骤。依赖项的数量实际上是为了减少总体大小,即安装 LibreOffice 子组件而不是完整的 LibreOffice 包。

理论上,如果您的发行版包含旧包或并非所有包,您可以使用 Distrobox/Toolbox。但您也可以使用 Docker 容器。

第1步:环境准备

先安装以下软件,缺啥就装啥。

  • Java 17 or later (21 recommended)
  • 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

对于基于 Debian 的系统,您可以使用以下命令:

sudo apt-get update
sudo apt-get install -y git  automake  autoconf  libtool  libleptonica-dev  pkg-config zlib1g-dev make g++ openjdk-21-jdk python3 python3-pip

对于基于 Fedora 的系统,请使用以下命令:

sudo dnf install -y git automake autoconf libtool leptonica-devel pkg-config zlib-devel make gcc-c++ java-21-openjdk python3 python3-pip

对于使用 Nix Package Manager 的非 root 用户,请使用以下命令:

nix-channel --update
nix-env -iA nixpkgs.jdk21 nixpkgs.git nixpkgs.python38 nixpkgs.gnumake nixpkgs.libgcc nixpkgs.automake nixpkgs.autoconf nixpkgs.libtool nixpkgs.pkg-config nixpkgs.zlib nixpkgs.leptonica

第 2 步:克隆并构建 jbig2enc(仅某些 OCR 功能需要)

对于 Debian 和 Fedora,您可以使用以下命令从源代码构建:

mkdir ~/.git
cd ~/.git &&\
git clone https://github.com/agl/jbig2enc.git &&\
cd jbig2enc &&\
./autogen.sh &&\
./configure &&\
make &&\
sudo make install

对于 Nix,您将面临未检测到的 Leptonica。使用以下命令直接安装即可绕过此问题:

nix-env -iA nixpkgs.jbig2enc

第 3 步:安装附加软件

接下来我们需要安装 LibreOffice 进行转换、ocrmypdf 进行 OCR 以及 opencv 进行模式识别功能。

安装以下软件:

  • libreoffice-core
  • libreoffice-common
  • libreoffice-writer
  • libreoffice-calc
  • libreoffice-impress
  • python3-uno
  • unoconv
  • pngquant
  • unpaper
  • ocrmypdf
  • opencv-python-headless

对于基于 Debian 的系统,您可以使用以下命令:

sudo apt-get install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf
pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint --break-system-packages

Fedora:

sudo dnf install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf
pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint

Nix:

nix-env -iA nixpkgs.unpaper nixpkgs.libreoffice nixpkgs.ocrmypdf nixpkgs.poppler_utils
pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint

第 4 步:克隆并构建 Stirling-PDF

cd ~/.git &&\
git clone https://github.com/Stirling-Tools/Stirling-PDF.git &&\
cd Stirling-PDF &&\
chmod +x ./gradlew &&\
./gradlew build

第 5 步:将jar包移动到所需位置

构建过程完成后,将在 build/libs 目录中生成 .jar 文件。您可以将此文件移动到所需位置,例如 /opt/Stirling-PDF/。您还必须将已下载的 Stirling-PDF 存储库中的 Script 文件夹移动到此目录。使用 OpenCV 的 python 脚本需要此文件夹。

sudo mkdir /opt/Stirling-PDF &&\
sudo mv ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/ &&\
sudo mv scripts /opt/Stirling-PDF/ &&\
echo "Scripts installed."

对于非root用户,您可以使用以下命令将jar保留在Stirling-PDF的主目录中:

mv ./build/libs/Stirling-PDF-*.jar ./Stirling-PDF-*.jar

第6步:其他文件

OCR

如果您计划使用 OCR(光学字符识别)功能,并且运行非英语扫描,则可能需要安装 Tesseract 的语言包。

安装语言包

最简单的方法是使用存储库提供的语言包。跳过其他步骤。

方法如下:

  • 通过选择您需要的语言的 .traineddata 文件来下载所需的语言包。
  • .traineddata文件放在Tesseract tessdata目录中:/usr/share/tessdata
  • 请查看 OCRmyPDF 安装指南以获取更多信息。

重要提示:请勿删除现有的 eng.traineddata,这是必需的。

基于 Debian 的系统,使用以下命令安装语言:

sudo apt update &&\
# All languages
# sudo apt install -y 'tesseract-ocr-*'

# Find languages:
apt search tesseract-ocr-

# View installed languages:
dpkg-query -W tesseract-ocr- | sed 's/tesseract-ocr-//g'

Fedora:

# All languages
# sudo dnf install -y tesseract-langpack-*

# Find languages:
dnf search -C tesseract-langpack-

# View installed languages:
rpm -qa | grep tesseract-langpack | sed 's/tesseract-langpack-//g'

Nix:

nix-env -iA nixpkgs.tesseract

注意:安装 tesseract 时,Nix Package Manager 会预安装几乎所有语言包。

第 7 步:运行 Stirling-PDF

已经推送到根目录的,运行以下命令:

./gradlew bootRun
or
java -jar /opt/Stirling-PDF/Stirling-PDF-*.jar

由于 libreoffice、soffice 和转换工具将其 dbus_tmp_dir 设置为dbus_tmp_dir="/run/user/$(id -u)/libreoffice-dbus",因此在使用其端点时可能会出现以下错误:

[Thread-7] INFO  s.s.SPDF.utils.ProcessExecutor - mkdir: cannot create directory ‘/run/user/1501’: Permission denied

要解决此问题,在启动 Stirling-PDF 之前,您必须使用以下命令将环境变量设置为您具有写访问权限的目录:

mkdir temp
export DBUS_SESSION_BUS_ADDRESS="unix:path=./temp"
./gradlew bootRun
or
java -jar ./Stirling-PDF-*.jar

第8步:添加桌面图标

这会将修改后的应用程序启动器添加到您的应用程序菜单中。

location=$(pwd)/gradlew
image=$(pwd)/docs/stirling-transparent.svg

cat > ~/.local/share/applications/Stirling-PDF.desktop <<EOF
[Desktop Entry]
Name=Stirling PDF;
GenericName=Launch StirlingPDF and open its WebGUI;
Category=Office;
Exec=xdg-open http://localhost:8080 && nohup $location bootRun &;
Icon=$image;
Keywords=pdf;
Type=Application;
NoDisplay=false;
Terminal=true;
EOF

注意:目前该应用程序将在后台运行,直到手动关闭。

可选:更改应用程序的主机和端口:

首先创建一个.env文件,您可以在其中存储环境变量:

touch /opt/Stirling-PDF/.env

在此文件中,您可以添加所有变量,每行一个变量,如主自述文件中所述(例如 SYSTEM_DEFAULTLOCALE=”de-DE”)。

创建一个新文件来存储我们的服务设置并使用 nano 编辑器打开它:

nano /etc/systemd/system/stirlingpdf.service

粘贴此内容,确保更新 jar 文件的文件名。按 Ctrl+S 和 Ctrl+X 保存并退出 nano 编辑器:

[Unit]
Description=Stirling-PDF service
After=syslog.target network.target

[Service]
SuccessExitStatus=143

User=root
Group=root

Type=simple

EnvironmentFile=/opt/Stirling-PDF/.env
WorkingDirectory=/opt/Stirling-PDF
ExecStart=/usr/bin/java -jar Stirling-PDF-0.17.2.jar
ExecStop=/bin/kill -15 $MAINPID

[Install]
WantedBy=multi-user.target

通知 systemd 它必须重建其内部服务数据库(每次更改服务文件时都必须运行此命令):

sudo systemctl daemon-reload

启用随系统自启动服务:

sudo systemctl enable stirlingpdf.service

查看服务状态:

sudo systemctl status stirlingpdf.service

手动启动/停止/重新启动服务:

sudo systemctl start stirlingpdf.service
sudo systemctl stop stirlingpdf.service
sudo systemctl restart stirlingpdf.service

如果您想自定义应用程序,请记住在运行项目之前设置必要的环境变量,该列表可以在主自述文件中看到。

您可以在终端中使用export命令或 java -jar 命令的 -D 参数来执行此操作:

export APP_HOME_NAME="Stirling PDF"
or
-DAPP_HOME_NAME="Stirling PDF"

(2)Docker / Podman部署

Stirling PDF 有 2 个不同的版本:完整版(717 MB)和超精简版(237MB)。根据您使用的功能类型,您可能需要较小的图像以节省空间。要了解不同版本提供的功能,请查看我们的版本映射。对于不介意空间优化的人,只需使用最新标签。

Docker Run

docker run -d \
  -p 8080:8080 \
  -v /location/of/trainingData:/usr/share/tessdata \
  -v /location/of/extraConfigs:/configs \
  -v /location/of/logs:/logs \
  -e DOCKER_ENABLE_SECURITY=false \
  -e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \
  -e LANGS=en_GB \
  --name stirling-pdf \
  frooodle/s-pdf:latest


  Can also add these for customisation but are not required

  -v /location/of/customFiles:/customFiles \

Docker Compose

version: '3.3'
services:
  stirling-pdf:
    image: frooodle/s-pdf:latest
    ports:
      - '8080:8080'
    volumes:
      - /location/of/trainingData:/usr/share/tessdata #Required for extra OCR languages
      - /location/of/extraConfigs:/configs
#      - /location/of/customFiles:/customFiles/
#      - /location/of/logs:/logs/
    environment:
      - DOCKER_ENABLE_SECURITY=false
      - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
      - LANGS=en_GB

注意:Podman是兼容CLI的Docker,因此只需将“docker”替换为“podman”即可。

 

 

原文链接:https://vuesite.cn/41694.html,转载请注明出处。
0
显示验证码
没有账号?注册  忘记密码?