如何使 pdfsam 在 (L)ubuntu 18.04 中工作?

如何使 pdfsam 在 (L)ubuntu 18.04 中工作?

我安装了以下版本的OpenJDK:

java-1.11.0-openjdk-amd64      1101       /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64

在 Lubuntu 18.04 中使用 PDFsam 时出现以下错误:

INFO   [12:15:47]: Starting PDFsam
INFO   [12:15:48]: Transparent windows not supported by the platform
INFO   [12:15:48]: Configuring Sejda 3.2.38
INFO   [12:15:48]: Gestarted in 1 second
INFO   [12:15:57]: 3.pdf loaded
INFO   [12:15:57]: 4.pdf loaded
INFO   [12:15:57]: 5.pdf loaded
INFO   [12:15:58]: Starting task (org.sejda.impl.sambox.MergeTask@81b1817) execution.
WARN   [12:15:59]: New fonts found, font cache will be re-built
WARN   [12:15:59]: Building on-disk font cache, this may take a while
ERROR  [12:15:59]: Unexpected error
java.lang.NoClassDefFoundError: Could not initialize class org.sejda.sambox.pdmodel.font.PDType1Font
at org.sejda.impl.sambox.util.FontUtils.<clinit>(FontUtils.java:74)
at org.sejda.impl.sambox.component.PDDocumentHandler.close(PDDocumentHandler.java:231)
at org.sejda.common.ComponentsUtility.nullSafeClose(ComponentsUtility.java:63)
at org.sejda.common.ComponentsUtility.nullSafeCloseQuietly(ComponentsUtility.java:49)
at org.sejda.impl.sambox.MergeTask.closeResources(MergeTask.java:232)
at org.sejda.impl.sambox.MergeTask.after(MergeTask.java:237)
at org.sejda.core.service.DefaultTaskExecutionService.actualExecution(DefaultTaskExecutionService.java:151)
at org.sejda.core.service.DefaultTaskExecutionService.execute(DefaultTaskExecutionService.java:71)
at org.sejda.core.service.DefaultTaskExecutionService.execute(DefaultTaskExecutionService.java:58)
at org.pdfsam.task.TaskExecutionController.lambda$request$0(TaskExecutionController.java:87)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

答案1

这是已知的错误LaunchPad 上的错误 1768565关于 OpenJDK 11 和 PDFSaM Ubuntu 包之间的兼容性问题。

我找到了可行的解决方案。我们应该删除pdfsamUbuntu 软件包并下载来自官方网站的 pdfsam-basic

sudo apt-get purge pdfsam
sudo apt-get autoremove
cd ~/Downloads
wget https://github.com/torakiki/pdfsam/releases/download/v4.0.1/pdfsam_4.0.1-1_all.deb
sudo apt-get install ./pdfsam_4.0.1-1_all.deb

这不是第一次了,Scilab 也曾被 Java 攻破(参见此问答)。
因此,Ubuntu 18.04 LTS 尚未准备好用于企业和教育部署。

答案2

解决方案在这里:

https://bugs.launchpad.net/ubuntu/+source/pdfsam/+bug/1768565

一旦将默认 Java 版本设置为 java-8,Ubuntu 18.04(Bionic Beaver 64 位)中的错误就会得到修复。无需降级或卸载 java-10 或 java-11。Ubuntu 18.04 的默认 Java 是 java-11。PDFSAM basic 3.35 或 3.37 是用 java-8 编写的,仅适用于 java-8。

在 PDFSAM Split and Merge Basic Edition 3.3.5 OpenJDK 运行时环境 1.8.0_181-8u181-b13-1ubuntu0.18.04.1-b13 上测试

在终端中运行 sudo update-alternatives --config java

选择/输入 2(或 java-8 上显示的任何序列号)。按 Enter 将默认 Java 版本设置为 java-8。

相关内容