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.dsc | DSC 标头元数据(EPS 文件) |
DscMetadata.bounding_box | EPS 边界框为 (x0, y0, x1, y1) |
DscMetadata.title | 标题取自 EPS DSC 标头 |
ImageSaveOptions.format | 输出格式:“png” 或 “jpeg” |
ImageSaveOptions.dpi | 输出分辨率(DPI) |