소개

PostScript (PS)와 캡슐화된 PostScript (EPS)는 인쇄 워크플로, 레거시 출판 시스템 및 그래픽 파이프라인에서 사용되는 벡터 문서 형식입니다. Python용 Aspose.Page FOSS은 PsDocument.ps.eps 파일을 모두 처리하는 단일 클래스를 — 제공하며, Python 코드에서 직접 PDF 또는 래스터 이미지로 내보내는 메서드를 포함합니다.

이 라이브러리는 Ghostscript 설치, Adobe 런타임, 네이티브 시스템 종속성이 필요하지 않습니다. Windows, Linux, macOS에서 실행됩니다. pip로 설치하고 Python 3.10+ 환경에서 즉시 사용할 수 있습니다.


PS 및 EPS 파일 로드

PsDocument은 문서를 로드하기 위한 두 개의 클래스 메서드를 제공합니다. from_file()은 파일 경로에서 읽으며; from_bytes()은 스트림이나 업로드에서 원시 바이트를 받아들입니다.

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)

is_eps 속성은 문서가 EPS 파일인 경우 True을 반환합니다, 이는 PS와 EPS 파일을 혼합 배치로 동일한 코드 경로에서 처리할 때 유용합니다.


PDF로 내보내기

로드된 PsDocument에 대해 to_pdf()를 호출하여 출력물을 bytes 객체로 얻습니다. 결과는 디스크에 쓸 수 있고, 데이터베이스에 저장하거나, HTTP 엔드포인트에서 반환할 수 있는 유효한 PDF 바이트 스트림입니다.

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)

기본 PDF 내보내기에는 옵션 객체가 필요하지 않습니다. to_pdf() 메서드는 고급 사용 사례를 위해 선택적인 옵션 매개변수를 허용합니다.


래스터 이미지로 내보내기

PS 또는 EPS 문서를 래스터 이미지로 렌더링하려면 ImageSaveOptions 인스턴스를 to_image()에 전달합니다. format"png" 또는 "jpeg"로 설정하고 dpi를 사용하여 출력 해상도를 제어합니다. 이 메서드는 인코딩된 이미지를 포함하는 bytes 객체를 반환합니다.

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)

JPEG 출력의 경우 format="jpeg"를 변경합니다. dpi 속성은 설정되지 않을 경우 기본값이 96입니다.


EPS 메타데이터 읽기

PsDocument는 파일에 DSC 주석이 존재할 때 DscMetadata 인스턴스를 반환하는 dsc 속성을 공개합니다. DscMetadata는 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)

배치 변환

모든 변환 메서드가 bytes를 반환하고 파일 경로나 원시 바이트를 입력으로 받아들이기 때문에, 배치 처리는 표준 Python 루프나 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)

같은 패턴을 "*.eps"로 glob 패턴을 변경함으로써 EPS 파일에 적용할 수 있습니다.


시작하기

관련 리소스