系统要求

介绍

Aspose.Slides for Java 是一个独立的库:它不需要 Microsoft PowerPoint 或 Microsoft Office。它是一个单独的 JAR 文件,发布在 Aspose 的 Maven 仓库中。该 JAR 文件仅包含 Java 类和资源,没有本机库,并且声明不依赖其他库。因此,同一个文件可以在所有支持的 Java 运行时可用的操作系统和处理器上运行。

本文列出了受支持的 Java 版本和操作系统以及 Linux 所需的字体库和字体,并以一个检查您环境的简短程序结束。要将库添加到项目,请参阅安装。

受支持的 Java 版本

Aspose.Slides for Java 可以在 Java 8 或更高版本上运行,使用 JDK 或 JRE。这包括长期支持的 Java 8、11、17、21 和 25,以及后续的 Java 26、27 等版本。Java 运行时可以来自任何供应商,例如 Eclipse Temurin、Amazon Corretto、Oracle 或 Linux 发行版的 OpenJDK 包。

Aspose.Slides 在这些版本上无需任何 JVM 选项,例如 --add-opens。在 Java 11 上,JVM 会打印一条以 “WARNING: An illegal reflective access operation has occurred” 开头的警告;该警告不影响结果。

Maven 项目以及安装中的命令需要 JDK 11 或更高版本。使用 Java 8 时,请参照检查您的设置编译并运行程序。

受支持的操作系统

因为 JAR 文件不含本机代码,Aspose.Slides for Java 可在 Windows、Linux 和 macOS 上运行,支持 Java 运行时能够兼容的任何处理器架构,例如 x64 和 ARM64。Windows 上唯一的需求是 Java 运行时。Linux 上,Java 的字体支持还需要Linux中描述的字体库和字体。

Linux

Aspose.Slides for Java 依赖 Java 运行时的字体支持来布局和绘制文本。在 Linux 上,这需要 fontconfig 库和至少一种已安装的字体。官方的 Linux 发行版容器镜像通常都没有这些组件。缺少它们时,创建演示文稿中的第一个示例在保存演示文稿时会失败,留下空文件,并报告以下错误:

java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration

官方的 eclipse-temurin 容器镜像(针对 Ubuntu 和 Alpine Linux)已经包含 fontconfig 和 DejaVu 字体,因此无需额外安装。在其他系统上,请安装下面列出的软件包。Debian、Ubuntu 和 Red Hat 的命令使用 sudo;在 Dockerfile 中,请在 RUN 指令中直接运行而不使用 sudo。DejaVu 字体已足以使 Aspose.Slides 正常运行;演示文稿使用的字体请参见字体。

Debian 和 Ubuntu

如果使用默认的 apt-get 设置从 Debian 或 Ubuntu 包安装 Java(如安装中的命令所示),Java 包会同时安装 fontconfig 库、DejaVu 字体以及这些 Java 包所需的 HarfBuzz 库,除此之外无需其他操作。

使用其他来源的 Java 运行时(例如 Eclipse Temurin 压缩包)时,请安装 fontconfig 和 DejaVu 字体:

sudo apt-get update && sudo apt-get install -y fontconfig fonts-dejavu-core

Dockerfile 通常会安装 Debian 或 Ubuntu 的 Java 包,例如 openjdk-21-jdk-headless 或 default-jdk-headless,并使用 --no-install-recommends 选项,导致 fontconfig、DejaVu 字体和 HarfBuzz 都被跳过。请使用上面的命令安装 fontconfig 和 DejaVu 字体,并同时安装 HarfBuzz:

sudo apt-get install -y libharfbuzz0b

如果缺少 HarfBuzz,这些 Java 包会提示 Please install the openjdk-*-jre package or recommended packages for openjdk-*-jre-headless,并因 UnsatisfiedLinkError(报告 libharfbuzz.so.0 无法打开)而保存失败。

Red Hat Enterprise Linux

Red Hat Enterprise Linux 的 java-<version>-openjdk-headless 包不安装 fontconfig 库。请同时安装 fontconfig 和 DejaVu 字体:

sudo dnf install -y fontconfig dejavu-sans-fonts

完整的 java-<version>-openjdk 包会将 fontconfig 和字体作为依赖一起安装,Amazon Linux 2023 的 Amazon Corretto 包(如 java-21-amazon-corretto-headless)亦是如此。

Alpine Linux

在基于 Alpine Linux 的 Dockerfile 中,安装 fontconfig 和 DejaVu 字体:

RUN apk add --no-cache fontconfig ttf-dejavu

在当前的 Alpine 发行版中,ttf-dejavu 会安装 font-dejavu 包。请使用 openjdk<version>-jre 或 openjdk<version>-jdk 包(例如 openjdk25-jdk)来安装 Java。Alpine Linux 的 openjdk<version>-jre-headless 包不包含 Java 的字体库,使用这些包时即使已安装字体,程序也会因 UnsatisfiedLinkError: no fontmanager in system library path 而失败。

字体

为了让文本使用正确的字体和度量,需要在系统上安装演示文稿使用的字体或合适的替代字体,或在应用程序中加载这些字体。请参阅部署字体、字体替换和自定义字体。

检查您的设置

为了验证库及其依赖是否已就绪,请运行一个保存演示文稿并将幻灯片渲染为图像的程序。保存和渲染均使用 Java 运行时的字体支持,而这正是上述 Linux 要求提供的。

将下面的代码保存为 CheckSetup.java,放在包含 Aspose.Slides JAR 文件的文件夹中。要下载 JAR 文件,请参阅在不使用 Maven 时使用 JAR 文件。

import com.aspose.slides.*;

public class CheckSetup {
    public static void main(String[] args) {
        Presentation presentation = new Presentation();
        try {
            // 在第一张幻灯片上添加一个带文本的矩形并保存演示文稿。
            ISlide slide = presentation.getSlides().get_Item(0);
            IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 400, 100);
            shape.getTextFrame().setText("Hello, Aspose.Slides!");
            presentation.save("hello.pptx", SaveFormat.Pptx);

            // 以每点一个像素的比例渲染幻灯片并保存图像。
            IImage image = slide.getImage(1f, 1f);
            try {
                image.save("hello.png", ImageFormat.Png);
            } finally {
                image.dispose();
            }
        } finally {
            presentation.dispose();
        }
    }
}

使用 JDK 11 或更高版本,在该文件夹中运行以下命令。如果您的 JAR 文件名不同,请相应修改命令中的名称。

java -cp aspose-slides-26.10-jdk8.jar CheckSetup.java

使用 Java 8,或在仅有 JRE 的系统上,请使用 JDK 中的 javac 编译程序后再运行生成的类。在 Linux 和 macOS 上,执行:

javac -cp aspose-slides-26.10-jdk8.jar CheckSetup.java
java -cp aspose-slides-26.10-jdk8.jar:. CheckSetup

在 Windows 上,执行相同的 javac 命令后,使用分号作为类路径分隔符运行类。请保留引号,以免 PowerShell 将分号视为命令结束符:java -cp "aspose-slides-26.10-jdk8.jar;." CheckSetup.

该程序向第一张幻灯片添加一个带文本的矩形,并使用save方法将演示文稿保存为 hello.pptx。随后使用getImage渲染幻灯片,并使用IImage.save将结果保存为 hello.png,格式为ImageFormat.Png。比例因子为 1 时,每点渲染一个像素,因此默认的 720 × 540 点幻灯片会生成 720 × 540 像素的图像,文本可见于矩形内部。未授权时,这两个文件都会带有评估水印;请参阅授权。如果缺少某项要求,程序会按照Linux中描述的错误之一停止。

开发工具

您可以使用任何受支持 Java 版本的 JDK 构建使用 Aspose.Slides 的应用程序。按照安装中的说明使用 Aspose 的 Maven 仓库和 Apache Maven,或使用任何能够使用 Maven 仓库的构建工具。也可以手动将 JAR 文件加入 IDE 或构建工具的类路径。

常见问题

我是否需要安装 Microsoft PowerPoint 才能进行转换和渲染?

不需要,PowerPoint 并非必需。Aspose.Slides 是一个用于创建、修改、转换和渲染演示文稿的独立引擎。

Aspose.Slides for Java 在 Linux 服务器上是否需要显示器或桌面环境?

不需要。Aspose.Slides 不依赖 X 服务器或显示器,因而可以在服务器和容器中运行。Linux 上仅需满足Linux中描述的字体库和字体。

渲染正确需要哪些字体?

演示文稿使用的字体或合适的替代字体必须可用。在 Linux 和 macOS 上,安装演示文稿所需的字体包可确保渲染一致。

为什么自定义字体在 Linux 上显示为回退或缺失的文本?

如果字体文件的 name 表条目不一致或损坏,Linux 的字体匹配栈(FreeType/fontconfig)可能会选中无效记录,从而导致字体未解析。使用包含修正 name 表的字体版本或安装一致的替代字体即可解决此问题。