您可以在闭源软件中提供 Ghostscript 替代方案

将 PostScript、EPS 和 XPS 转换为 PDF 以及来自托管 .NET 库的图像,无需本机转换器二进制或 Copyleft 义务。

 

您需要在产品中转换 PostScript、EPS 或 XPS 文件。Artifex 工具能够很好地完成这项工作,并且可以免费下载:Ghostscript 解释 PostScript 和 EPS,GhostXPS 则处理 XPS。随后,您的法律团队阅读许可证,项目便停了下来。

本页介绍了许可限制是什么、您的选择是什么(包括我们不涉及的选项)以及如果 Aspose.Page 适合的话如何迁移。

Aspose.Page 是一个用于转换和渲染的商业 .NET 库。它专为在闭源应用程序中重新分发而设计,无需本机 Ghostscript 安装。

许可证的实际要求是什么

自 2013 年 2 月版本 9.07 起,Ghostscript 已获得 GNU Affero 通用公共许可证 v3 的双重许可。在此之前,它是 GPL v3。 Artifex Software 拥有版权并出售商业许可证作为 AGPL 合规性的替代方案。 同样的双重许可也涵盖更广泛的 GhostPDL 源代码树,其中包括 GhostXPS 解释器,因此以 XPS 代替 PostScript 进行处理并不会改变许可问题。

AGPL 的 Copyleft 条款可以要求在 AGPL 下发布衍生作品的完整相应源代码。它还扩展到通过网络向用户提供的软件,因此从不发布二进制文件的 SaaS 产品不会自动超出其范围。

重要的细微差别:链接与付费

一个常见的立场是,将 `gs` 作为单独的进程调用可以避免 Copyleft,因为应用程序未链接到库。这是真正有争议的领土。关于流程边界是否具有决定性,或者通信的亲密性和组合程序的设计是否更重要,指导意见有所不同。

我们不是您的律师,此页面也不是法律建议。您的法律团队必须评估您的产品的构建、提供和分销方式。对于很多团队来说,不确定性本身就是他们不愿意承担的成本。

判例法

在 *Artifex Software, Inc. v. Hancom, Inc.* 案中,Artifex 声称 Hancom 在未购买商业许可证或未遵守 GPL 的来源披露要求的情况下,将 GPL 许可的 Ghostscript 纳入 Hancom Office。

在25 April 2017上,U.S. District Court for the Northern District of California驳回了Hancom的驳回动议。该裁决允许 Artifex 继续处理违反合同和侵犯版权的问题。双方于 2017 年 12 月达成和解。

意义很狭隘:开源许可证是可执行的。该裁决并未决定每次集成或单独进程调用都会创建衍生作品。

您的选择

诚实的路线有3条,只有其中一条涉及我们。

1. 从Artifex购买商业许可证

Artifex 出售商业许可证,因此公司可以在闭源产品中使用 Ghostscript。这是合法的、受支持的路由,当您依赖 Ghostscript 的完整功能集时,它可能是正确的选择。

如果出现以下情况,请选择此选项: 您可以使用 Ghostscript 作为完整的 PostScript 或 PDF 解释器或 RIP,包括分色、打印设备、PDF 输入或复杂的 RIP 工作流程。

2.更换元件

如果要求较窄 - 将 PS、EPS 或 XPS 文件转换为 PDF 或图像 - 专门构建的商业库可以覆盖它,而无需遇到相同的许可问题。

如果出现以下情况,请选择此选项: 您的用途是转换和渲染,并且在每个部署中您更喜欢托管 NuGet 包而不是本机二进制文件。

3. 删除该功能

如果格式转换是一种很少使用的便利,那么删除它可能比任一许可证的成本都低。

如果出现以下情况,请选择此选项: 该功能的重要性不足以证明商业许可或迁移的合理性。

Aspose.Page 适合什么地方,不适合什么地方

如果您需要以下功能,Aspose.Page 是一个不错的选择:

  • 将 PostScript (PS) 和 EPS 文件转换为 PDF。
  • 将 XPS 和 OXPS 文档转换为 PDF。
  • 将其中任何格式渲染为 PNG、JPEG、TIFF 或 BMP。
  • 合并多个 PS 或 XPS 文档。
  • 以编程方式创建和编辑 XPS 文档。
  • 在 EPS 文件中读取和写入 XMP 元数据。
  • 裁剪、调整大小和转换 EPS 文件。
  • 在闭源商业产品、服务器、容器或无服务器功能内运行转换。

如果您需要以下功能,Aspose.Page 是错误的工具:

  • 具有设备级控制的完整 PostScript 解释器或 RIP。
  • PDF 文件作为输入 — 使用 Aspose.PDF ,这是一个不同的产品。
  • CMYK 分色或印前级打印设备输出。
  • Ghostscript 的 pdfwrite 蒸馏器行为准确再现。

如果您在第二个列表中,Artifex 商业许可证更适合。其成本将低于无法达到同等水平的迁移。

容器中本机转换器的成本是多少

从 .NET 到 Ghostscript 的每条路径(`Ghostscript.NET`、直接 P/Invoke 或作为进程调用 `gs`)均以映像中的本机二进制文件及其共享库结束。这创造了持续的运营工作:

  • 图像大小。 您正在运送一个解释器,而不仅仅是一个转换器。
  • CVE 修补。 Ghostscript 漏洞成为修补和重建节奏的一部分。
  • 基础镜像锁定。 本机构建和共享库限制了您可以使用哪些基础镜像; glibc 和 musl 构建不可互换。
  • 环境漂移。 开发机器、CI 运行程序和生产主机必须携带兼容的本机版本。
  • Azure Functions 使用计划。 本机包无法安装在那里,这是一个硬停止而不是部署不便。请参阅 Docker和无服务器部署技术指南 。

托管库消除了本机转换器的这些问题。您仍然必须打包和配置文档所需的字体。

.NET 的 Ghostscript 与 Aspose.Page

  • 许可证 — Ghostscript:AGPL v3,或来自 Artifex 的商业广告。 Aspose.Page:仅限商业。
  • 来源披露 — Ghostscript:当 AGPL 适用时需要。 Aspose.Page:不需要。
  • 网络和SaaS — Ghostscript:网络使用在AGPL范围内。 Aspose.Page:商业部署包含在购买的许可证中。
  • 实现 — Ghostscript:本机 C 二进制文件。 Aspose.Page:托管 .NET 库,没有本机转换器二进制文件。
  • .NET 集成 — Ghostscript:流程调用或包装器,例如 Ghostscript.NET。 Aspose.Page:NuGet 封装和直接 API。
  • 部署 — Ghostscript:安装或捆绑本机二进制文件和共享库。 Aspose.Page:将托管程序集与应用程序打包。
  • 输入格式 — Ghostscript:PS、EPS、PDF 等;XPS 需要 GhostXPS,它是同一 GhostPDL 源代码树中的独立解释器。Aspose.Page:在一个库中支持 PS、EPS、XPS 和 OXPS。
  • 输出 — Ghostscript:PDF 加上各种光栅和打印设备。 Aspose.Page:PDF、PNG、JPEG、TIFF 和 BMP。
  • 范围 — Ghostscript:完整解释器和 RIP。 Aspose.Page:转换、渲染和文档操作。
  • 定价 — Ghostscript:商业定价由 Artifex 报价。 Aspose.Page:从 US$599 发布的等级。

迁移

PostScript 或 EPS 至 PDF

C# 转换替换 `gs` pdfwrite 命令

using System;
using Aspose.Page.EPS;
using Aspose.Page.EPS.Device;
PsDocument document = new PsDocument("input.ps");
PdfSaveOptions options = new PdfSaveOptions(true);
options.AdditionalFontsFolders = new string[] { @"C:\MyFonts" };
document.SaveAsPdf("output.pdf", options);
foreach (Exception ex in options.Exceptions)
{
    Console.WriteLine(ex.Message);
}

替换:`gs -sDEVICE=pdfwrite -o output.pdf input.ps`

PostScript 或 EPS 到图像

C# 转换替换 `gs` png16m 命令

using System.IO;
using Aspose.Page.EPS;
using Aspose.Page.EPS.Device;
PsDocument document = new PsDocument("input.ps");
ImageSaveOptions options = new ImageSaveOptions();
options.ImageFormat = Aspose.Page.Drawing.Imaging.ImageFormat.Png;
byte[][] imagesBytes = document.SaveAsImagesBytes(options);
for (int i = 0; i < imagesBytes.Length; i++)
{
    File.WriteAllBytes("page_" + i + ".png", imagesBytes[i]);
}
// One byte array is returned for each page.

替换:`gs -sDEVICE=png16m -o page_%d.png input.ps`

XPS 至 PDF

C# XPS 到 PDF 转换

using System.IO;
using Aspose.Page.XPS;
using Aspose.Page.XPS.Presentation.Pdf;
using (Stream pdfStream = File.Open("output.pdf", FileMode.Create, FileAccess.Write))
{
    XpsDocument document = new XpsDocument("input.xps");
    PdfSaveOptions options = new PdfSaveOptions
    {
        JpegQualityLevel = 100,
        ImageCompression = PdfImageCompression.Jpeg,
        TextCompression = PdfTextCompression.Flate
    };
    document.SaveAsPdf(pdfStream, options);
}
// gs does not read XPS; the Artifex equivalent is gxps.

`gs` 不读取 XPS。Artifex 中对应的是 GhostPDL 的 `gxps`,采用相同的双重许可。

您需要哪个许可证?

这些公布的价格于 2026 年 10 月 26 日进行了检查。请在 [Aspose.Page for .NET 定价页面](https://purchase.aspose.com/pricing/page/net) 上确认当前定价。

  • 内部工具,一名开发人员和一个部署位置: Developer Small Business — US$599。
  • 嵌入分发给客户的产品或公共 Web 应用程序中: Developer OEM — US$1,797。
  • 作为您销售的 SDK 或 API 的一部分进行分发: Developer SDK — US$11,980。
  • 团队或更广泛的组织部署: 站点许可证可用;请参阅定价页面。

对于商业产品或公共 Web 应用程序内提供的 Ghostscript 替代品,Developer OEM 通常是正确的层。它涵盖一名开发人员、无限的部署位置和外部分发。

永久许可证包括一年的更新,并可享受折扣续订。

在提交之前尝试一下

未经许可的评估输出带有水印。 30 天免费临时许可证消除了评估限制,因此您可以在购买之前测试自己的文件。

带上您最困难的 PostScript 文件。如果转换不正确,最好在评估时发现,而不是购买后发现。