Introduzione

PostScript (PS) e Encapsulated PostScript (EPS) sono formati di documenti vettoriali utilizzati nei flussi di stampa, nei sistemi di pubblicazione legacy e nelle pipeline grafiche. Aspose.Page FOSS per Python fornisce PsDocument — una singola classe che gestisce sia i file .ps sia i file .eps — con metodi per esportarli in PDF o immagini raster direttamente dal codice Python.

La libreria non richiede l’installazione di Ghostscript, nessun runtime Adobe e nessuna dipendenza di sistema nativa. Funziona su Windows, Linux e macOS. Installala con pip e usala immediatamente in qualsiasi ambiente Python 3.10+.


Caricamento di file PS ed EPS

PsDocument espone due metodi di classe per caricare un documento. from_file() legge da un percorso file; from_bytes() accetta byte grezzi da uno stream o da un upload.

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)

La proprietà is_eps restituisce True se il documento è un file EPS, il che è utile quando si elabora un batch misto di file PS ed EPS attraverso lo stesso percorso di codice.


Esportazione in PDF

Chiama to_pdf() su un PsDocument caricato per ottenere l’output come oggetto bytes. Il risultato è un flusso di byte PDF valido che può essere scritto su disco, archiviato in un database o restituito da un endpoint 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)

Non è necessario alcun oggetto opzioni per un’esportazione PDF predefinita. Il metodo to_pdf() accetta un parametro opzioni opzionale per casi d’uso avanzati.


Esportazione in immagini raster

Per rendere un documento PS o EPS in un’immagine raster, passa un’istanza ImageSaveOptions a to_image(). Imposta format su "png" o "jpeg" e dpi per controllare la risoluzione di output. Il metodo restituisce un oggetto bytes contenente l’immagine codificata.

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)

Per l’output JPEG, modifica format="jpeg". La proprietà dpi è impostata di default a 96 se non definita.


Lettura dei metadati EPS

PsDocument espone una proprietà dsc che restituisce un’istanza DscMetadata quando i commenti DSC sono presenti nel file. DscMetadata fornisce accesso strutturato alle coordinate della bounding box, alle dimensioni della pagina, all’orientamento, al titolo e ai campi creatore analizzati dall’intestazione 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)

Conversione batch

Poiché tutti i metodi di conversione restituiscono bytes e accettano percorsi di file o byte grezzi come input, l’elaborazione batch è diretta da implementare con i cicli Python standard o 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)

Lo stesso schema si applica ai file EPS modificando il pattern glob in "*.eps".


Guida introduttiva

Risorse correlate