Wprowadzenie
PostScript (PS) i Encapsulated PostScript (EPS) to wektorowe formaty dokumentów używane w przepływach pracy druku, starszych systemach publikacji oraz pipeline’ach graficznych. Aspose.Page FOSS dla Python zapewnia PsDocument — jedną klasę, która obsługuje zarówno pliki .ps, jak i .eps — z metodami umożliwiającymi eksport do PDF lub obrazów rastrowych bezpośrednio z kodu Python.
Biblioteka nie wymaga instalacji Ghostscript, środowiska uruchomieniowego Adobe ani natywnych zależności systemowych. Działa na Windows, Linux i macOS. Zainstaluj ją za pomocą pip i używaj od razu w dowolnym środowisku Python 3.10+.
Ładowanie plików PS i EPS
PsDocument udostępnia dwie metody klasowe do ładowania dokumentu. from_file() odczytuje z ścieżki pliku; from_bytes() przyjmuje surowe bajty ze strumienia lub przesyłki.
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)
Właściwość is_eps zwraca True, jeśli dokument jest plikiem EPS, co jest przydatne przy przetwarzaniu mieszanej partii plików PS i EPS tym samym kodem.
Eksportowanie do PDF
Wywołaj to_pdf() na załadowanym PsDocument, aby uzyskać wynik jako obiekt bytes. Wynik jest prawidłowym strumieniem bajtów PDF, który może być zapisany na dysku, przechowywany w bazie danych lub zwrócony z punktu końcowego 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)
Obiekt opcji nie jest wymagany przy domyślnym eksporcie PDF. Metoda to_pdf() przyjmuje opcjonalny parametr opcji dla zaawansowanych przypadków użycia.
Eksportowanie do obrazów rastrowych
Aby wyrenderować dokument PS lub EPS do obrazu rastrowego, przekaż instancję ImageSaveOptions do to_image(). Ustaw format na "png" lub "jpeg" oraz dpi, aby kontrolować rozdzielczość wyjściową. Metoda zwraca obiekt bytes zawierający zakodowany obraz.
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)
Aby uzyskać wyjście JPEG, zmień format="jpeg". Wartość domyślna właściwości dpi wynosi 96, jeśli nie jest ustawiona.
Odczytywanie metadanych EPS
PsDocument udostępnia właściwość dsc, która zwraca instancję DscMetadata, gdy w pliku znajdują się komentarze DSC. DscMetadata zapewnia strukturalny dostęp do współrzędnych bounding box, rozmiaru strony, orientacji, tytułu oraz pól twórcy wyodrębnionych z nagłówka 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)
Konwersja wsadowa
Ponieważ wszystkie metody konwersji zwracają bytes i przyjmują ścieżki plików lub surowe bajty jako wejście, przetwarzanie wsadowe jest proste do wdrożenia przy użyciu standardowych pętli Python lub 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)
Ten sam wzorzec ma zastosowanie do plików EPS, zmieniając wzorzec glob na "*.eps".