PS 和 EPS 转换

PS 和 EPS 转换

PsDocument 是加载 PostScript(.ps)和封装 PostScript(.eps)文件的入口点。两种格式均通过相同的类和相同的接口处理。


加载 PS 或 EPS 文件

使用 PsDocument.from_file() 从文件路径加载文档。is_eps 属性指示加载的文件是否为 EPS 文件。

from aspose.page.ps.document import PsDocument

ps = PsDocument.from_file("document.ps")
eps = PsDocument.from_file("illustration.eps")
print("Is EPS:", eps.is_eps)

要从原始字节加载(例如上传或网络流),请使用 from_bytes():

from aspose.page.ps.document import PsDocument

with open("document.ps", "rb") as f:
    data = f.read()
doc = PsDocument.from_bytes(data)

导出为 PDF

在已加载的 PsDocument 上调用 to_pdf() 以获取 PDF 字节数组。将结果写入磁盘或直接从 HTTP 处理程序返回。

from pathlib import Path
from aspose.page.ps.document import PsDocument

ps = PsDocument.from_file("input.ps")
pdf_bytes = ps.to_pdf()
Path("output.pdf").write_bytes(pdf_bytes)

导出为 PNG 或 JPEG

将 ImageSaveOptions 实例传递给 to_image()。将 format 设置为 "png" 或 "jpeg",并将 dpi 设置为所需的分辨率。

from pathlib import Path
from aspose.page.ps.document import PsDocument
from aspose.page.ps.output import ImageSaveOptions

eps = PsDocument.from_file("illustration.eps")
opts = ImageSaveOptions(format="png", dpi=150)
Path("output.png").write_bytes(eps.to_image(opts))

读取 EPS DSC 元数据

PsDocument.dsc 在 EPS 文件中存在 DSC 头部注释时返回一个 DscMetadata 实例。可使用它在转换之前读取边界框、标题和创建者字段。

from aspose.page.ps.document import PsDocument

eps = PsDocument.from_file("illustration.eps")
dsc = eps.dsc
if dsc is not None:
    print("Title:", dsc.title)
    print("Bounding box:", dsc.bounding_box)
    print("Creator:", dsc.creator)

技巧与最佳实践

  • 在处理上传时使用 from_bytes(),以避免写入临时文件。
  • 检查 is_eps 以在处理混合的 PS 和 EPS 文件批次时分支逻辑。
  • 为文档预览系统使用的光栅输出设置 dpi=150 或更高。
  • 所有转换方法返回 bytes — 如有需要,可在不进行磁盘 I/O 的情况下存储或流式传输它们。

常见问题

问题原因修复
FileNotFoundError传递给 from_file() 的路径不存在在调用 from_file() 之前验证文件路径
PDF 输出为空PS 文件不包含可渲染的内容检查 PS 源代码中缺失的 showpage 运算符
低分辨率光栅默认 DPI 为 96通过 ImageSaveOptions(dpi=150) 或更高

FAQ

我可以将 EPS 文件转换为 PDF 吗?

是的。PsDocument.from_file() 接受 .ps 和 .eps 两种扩展名。对返回的文档调用 to_pdf() 以获取 PDF 字节。

转换是否需要 Ghostscript?

不需要。该库不依赖 Ghostscript 或任何本机运行时。

我可以在不写入磁盘的情况下处理 PS 文件吗?

是的。使用 from_bytes() 从 bytes 对象加载,并直接使用来自 to_pdf() 或 to_image() 的返回的 bytes —— 无需写入文件。


API Reference 概要

类 / 方法描述
PsDocument.from_file(path)从文件路径加载 PS 或 EPS
PsDocument.from_bytes(data)从原始字节加载 PS 或 EPS
PsDocument.to_pdf(options)导出为 PDF 字节
PsDocument.to_image(options)导出为栅格图像字节
PsDocument.is_eps如果加载的文件是 EPS,则为 True
PsDocument.dscDSC 标头元数据(EPS 文件)
DscMetadata.bounding_boxEPS 边界框为 (x0, y0, x1, y1)
DscMetadata.title标题取自 EPS DSC 标头
ImageSaveOptions.format输出格式:“png” 或 “jpeg”
ImageSaveOptions.dpi输出分辨率(DPI)

另请参阅

 中文