Úvod
PostScript (PS) a Encapsulated PostScript (EPS) jsou vektorové formáty dokumentů používané v tiskových pracovních postupech, starších vydavatelských systémech a grafických pipelinech. Aspose.Page FOSS pro Python poskytuje PsDocument — jedinou třídu, která zpracovává jak .ps, tak .eps soubory — s metodami pro export do PDF nebo rastrových obrázků přímo z Python kódu.
Knihovna nevyžaduje instalaci Ghostscriptu, žádné Adobe runtime ani nativní systémové závislosti. Funguje na Windows, Linuxu i macOS. Nainstalujte ji pomocí pip a použijte okamžitě v jakémkoli prostředí Python 3.10+.
Načítání souborů PS a EPS
PsDocument poskytuje dvě metody třídy pro načtení dokumentu. from_file() načte ze souborové cesty; from_bytes() přijímá surové bajty ze streamu nebo nahrání.
from aspose.page.ps.document import PsDocument
# Load from file path
ps = PsDocument.from_file("document.ps")
eps = PsDocument.from_file("illustration.eps")
# Load from bytes (network stream, upload, etc.)
with open("document.ps", "rb") as f:
data = f.read()
ps_from_bytes = PsDocument.from_bytes(data)
Vlastnost is_eps vrací True, pokud je dokument souborem EPS, což je užitečné při zpracování smíšené dávky souborů PS a EPS stejnou cestou kódu.
Export do PDF
Zavolejte to_pdf() na načteném PsDocument, abyste získali výstup jako objekt bytes. Výsledek je platný PDF bytový proud, který lze zapsat na disk, uložit do databáze nebo vrátit z koncového bodu 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)
Pro výchozí export PDF není vyžadován žádný objekt možností. Metoda to_pdf() přijímá volitelný parametr options pro pokročilé případy použití.
Exportování do rastrových obrázků
Pro vykreslení dokumentu PS nebo EPS na rastrový obrázek předáte instanci ImageSaveOptions do to_image(). Nastavte format na "png" nebo "jpeg" a dpi pro řízení rozlišení výstupu. Metoda vrací objekt bytes obsahující zakódovaný obrázek.
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)
png_bytes = eps.to_image(opts)
Path("output.png").write_bytes(png_bytes)
Pro výstup JPEG změňte format="jpeg". Vlastnost dpi má výchozí hodnotu 96, pokud není nastavena.
Čtení metadat EPS
PsDocument vystavuje vlastnost dsc, která vrací instanci DscMetadata, pokud jsou v souboru přítomny DSC komentáře. DscMetadata poskytuje strukturovaný přístup ke koordinátám ohraničujícího rámečku, velikosti stránky, orientaci, názvu a poli tvůrce, které jsou parsovány z hlavičky EPS.
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("HiRes bounding box:", dsc.hires_bounding_box)
Dávková konverze
Protože všechny konverzní metody vracejí bytes a přijímají cesty k souborům nebo surová data jako vstup, dávkové zpracování je přímé implementovat pomocí standardních Python smyček nebo concurrent.futures.
from pathlib import Path
from aspose.page.ps.document import PsDocument
input_dir = Path("ps-files")
output_dir = Path("pdf-output")
output_dir.mkdir(exist_ok=True)
for ps_file in input_dir.glob("*.ps"):
doc = PsDocument.from_file(str(ps_file))
out_path = output_dir / ps_file.with_suffix(".pdf").name
out_path.write_bytes(doc.to_pdf())
print("Converted:", ps_file.name)
Stejný vzor se použije pro soubory EPS změnou glob vzoru na "*.eps".