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".