소개
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 파일에 적용할 수 있습니다.