您可以在闭源软件中提供 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 文件。如果转换不正确,最好在评估时发现,而不是购买后发现。