**Encapsulated PostScript** (disingkat **EPS**) adalah suatu format berkas grafik, yang dapat berisikan grafik vektor, teks ataupun bitmap. Suatu berkas EPS pada intinya adalah suatu berkas PostScript yang memenuhi pembatasan tambahan. Batasan-batasan yang dimaksud bertujuan membuat peranti lunak menjadi lebih mudah untuk melakukan embedding berkas EPS dalam suatu dokumen Postscript lain. Sebagaimana Postscript EPS pun mendukung berbagai macam modus pewarnaan, misalnya RGB, Lab, CMYK, Duplex, Warna Berindeks, dan Skala Abu-abu. Selain itu EPS juga menuruni kemampuan PostScript dalam menyajikan berbagai jenis font atau tulisan.

Sebagai syarat minimum, suatu berkas EPS berisikan komentar PostScript yaitu *BoundingBox* sebagai tambahan dari header PostScript, yang menjelaskan daerah persegiempat tempat grafik digambarkan. Program aplikasi dapat memanfaatkan informasi ini untuk menata letaknya dalam suatu halaman di mana berkas EPS ini akan disisipkan, bahkan bila seandainya program yang bersangkutan tidak dapat melakukan proses render di dalamnya secara langsung.

Berkas-berkas EPS ditandai dengan ekstensi berkas `.eps` atau `.epsf`, di mana yang terakhir merupakan kependekan dari *Encapsulated PostScript File*. Isi dari berkas EPS dituliskan dalam format teks polos sehingga merupakan suatu format yang nyaman untuk dihasilkan oleh suatu program aplikasi buatan sendiri.

Pratayang EPS
-------------

Berkas EPS umumnya memiliki gambar pratayang dari isi yang dikandungnya, dengan tujuan untuk ditampilkan secara on-screen. Idenya adalah untuk memperbolehkan adanya suatu pratayang dari hasil keluaran akhir dalam setiap program aplikasi yang dapat menggambarkan suatu bitmap. Tanpa kemampuan pratayang ini para program aplikasi harus secara langsung melakukan proses render data PostScript (PS) di dalam berkas EPS, yang umumnya jauh di luar kemampuan pada kebanyakan mesin-mesin sampai pada saat ini.

Saat pertama kalinya EPS diimplementasikan, satu-satunya jenis mesin yang menggunakan secara luas PostScript adalah mesin-mesin Apple Maccintosh. Mesin-mesin dulunya ini tidak dapat langsung merender PostScript, yang dimunculkan Adobe dengan permasalahan mengenai bagaimana menyediakan imej pratayang saat mengikutsertakan versi aktual PS untuk printer yang bersangkutan. Dalam mesin Mac hal ini dapat dengan mudah diatasi, sebagaimana dalam sistem berkas Mac yang mengikutsertakan dua buah berkas (dikenal sebagai garpu -- *forks*) yang secara logik direferensikan sebagai satu bagian. Dengan menempatkan Postscript dalam data garpu dan suatu sumber daya (*resource*) PICT Mac standar dalam sumber daya garpu, kedua imej dapat dipindahkan hampir secara bersamaan tanpa disadari seakan-akan keduanya adalah satu berkas. Umumnya suatu pratayang PICT mengandung suatu bitmap, akan tetapi dapat juga berisikan suatu representasi vektor dari keseluruhan imej, menghasilkan pratayang yang amat berkualitas tinggi.

Sayang tidak ada satupun teknologi-teknolog ini yang eksis di suatu sistem operasi. Akan tetapi saat berhadapan dengan masalah yang sama untuk versi program-program berbasis Microsoft Windows-nya, Adobe memutuskan sebagai gantinya menggunakan suatu berkas TIFF terenkode pada bagian kepala (*header*) dari suatu berkas PostScript. Kadang, walaupun amat jarang, digunakan pula format WMF (Windows Metafile) sebagai alternatif lain. WMF memiliki kelebihan untuk menyediakan pratayang dalam bentuk vektor. Kedua format PC dari berkas EPS memiliki suatu kelemahan khusus: dikarenakan data, header dan pratayang suatu berkas PostScript berada dalam satu berkas, hal ini akan menyebabkan kesalahan pencetakan (*printing errors*) bila suatu program yang menangani berkas tersebut tidak cukup mengerti untuk hanya melakukan ekstraksi dari data PostScript.

Format keempat yang dikenal sebagai EPSI mengikutsertakan suatu bitmap pratayang terenkode-ASCII. Format ini mengizinkan hanya pratayang hitam-putih. Cara ini secara umum hanya digunakan dalam sistem opreasi UNIX.

Sayangnya, dengan teradapatnya berbagai cara berbeda guna merepresentasikan pratayang, menyebabkan keterbatasan dari portabilitas. Suatu program aplikasi yang tidak dapat mengintepretasikan suatu pratayang berkas EPS umumnya menampilkan suatu kotak kosong pada layar komputer, akan tetapi mereka tetap dapat mencetaknya dengan benar.

Jenis pratayang yang paling banyak didukung adalah pratayang format Windows dengan sebuah TIFF; program-program yang tetap ingin memiliki unsur portabilitas tinggi harus menjaga agar sesederhana mungkin memanfaatkan format TIFF, menghindari fitur-fitur baru TIFF yang mungkin masih membingungkan.

Meninggalkan pratayang
----------------------

Tahun-tahun belakangan ini, program-program aplikasi tampak telah memulai untuk tidak mengindahkan bagian pratayang dari berkas EPS, akan tetapi tetap menampilkan pratayang pada layar. Hal ini dicapai dengan melakukan intepretasi PostScript untuk membuat pratayang versi sendiri. Cara ini menjadi mungkin dengan semakin meningkatnya kecepatan pemrosesan komputer-komputer modern dewasa ini; saat EPS pertama kali dirancang cara ini masih jauh dari kemampuan komputer pada saat itu, atau terlalu lambat sehingga cara tersebut tidak diterima.

Program-program aplikasi mungkin akan mempertahankan bagian PostScript untuk pencetakan PostScript, atau sama sekali menghilangkannya, dengan hanya menggunakan data-data PostScript yang telah dikonversi. Cara ini dapat menghilangkan perintah-perintah khusus yang tersembunyi dalam berkas EPS yang ditujukan pada suatu alat (printer) tertentu (device-specific tricks) sehingga akan kemungkinan dapat menimbulkan masalah pada proses pencetakan.

Untungnya, dalam berbagai kasus intepreter dalam berkas PostScript memiliki kualitas rendah, atau terbatas bila dibandingkan dengan intepreter yang terdapat dalam sebuah printer. Hal ini dapat berarti tidak ada pratayang yang ditampilkan, meninggalkan teknologi baru yang tidak jauh lebih berguna dibandingkan yang lama.

Versi saat ini dari Microsoft Office (mulai dari Office 2003) mengikutsertakan cara baru ini.

Isi minimal berkas EPS
----------------------

Berkas EPS adalah berkas PostScript yang dibatasi, artinya tidak boleh terdapat perintah-perintah PostScript tertentu dan harus terdapat komentar-komentar PostScript tertentu pada bagian kepalanya (*header*).

### Baris pertama

Baris pertama dari berkas EPS harus bertuliskan:

```
%!PS-Adobe EPSF-3.0
```

yang menyatakan bahwa berkas tersebut adalah berkas PostScript dengan EPSF versi 3.0 sesuai dengan aturan DSC (*Document Structuring Convention*) 3.0 atau lebih.

### BoundingBox

Contoh berkas EPS
Bagian kepala suatu berkas EPS harus pula melengkapi syarat kedua dari DSC 3.0 atau lebih, yaitu bahwa memuat:

```
%%BoundingBox: llx lly urx ury
```

yang menerangkan pada program aplikasi yang mengolah berkas ini berapa besar isi dari imej yang ada di dalamnya. Nilai-nilai *(llx,lly)* menyatakan ujung koordinat kiri bawah gambar, sedangkan *(urx,ury)* menyatakan koordinat ujung kanan atas gambar dalam satuan piksel, atau dalam artian kependekannya menurut Adobe adalah

*ll*: *lower-left*
dan

*ur*: *upper-right*.
Nilai-nilai ini berfungsi pula sebagai batas-batas daerah tempat proses penggambaran dilakukan. Apabila terdapat objek yang digambarkan mengambil titik di luar rentang *llx lly urx ury* yang dituliskan, objek ini akan terpotong dan digambarkan hanya bagian yang berada pada daerah tersebut.

### Operator terlarang

Terdapat beberapa operator PostScript yang tidak boleh digunakan dalam berkas EPS karena akan mengubah keadaan atau status-status dari berkas utama. Secara khusus operator-operator yang dimaksud adalah:

|  |  |  |  |
| --- | --- | --- | --- |
| **banddevice** | **exitserver** | **initmatrix** | **setshared** |
| **clear** | **framedevice** | **quit** | **startjob** |
| **cleardictstack** | **grestoreall** | **renderbands** | **copypage** |
| **initclip** | **setglobal** | **initgraphics** | **etpagedevice** |
| **erasepage** | **nulldevice** | **sethalftone** | **setscreen**  |
| **setgstate** | **setmatrix** | **settransfer** | **undefinefont** |
|

Hal ini tidak berarti bahwa operator-operator lain *bebas* digunakan. Suatu operator dapat digunakan sejauh tidak mengubah keadaan atau status dari berkas utama.

### Lain-lain

Selain itu terdapat pula beberapa hal yang membatasi suatu berkas EPS, yaitu:

* hanya boleh terdiri dari satu halaman,
* tidak boleh menggunakan perintah pencetakan **showpage**,
* *stack* harus ditinggalkan PERSIS sama pada akhir berkas EPS sebagaimana pada awal berkas EPS, dan
* isi setiap baris dari berkas EPS tidak boleh melebihi panjang 255 karakter.

Contoh berkas
-------------

Sebagai ilustrasi, berikut ini adalah contoh berkas EPS yang isinya menggambarkan suatu segiempat dengan pojok kiri bawahnya diberi keterangan **(llx,lly** dan pojok kanan atasnya diberi keterangan **(urx,ury)**

```
%!PS-Adobe EPSF-3.0
%%BoundingBox: 0 0 300 300
newpath 
50 50 moveto
250 50 lineto
250 250 lineto
50 250 lineto
closepath
stroke

/Times-Roman findfont
28 scalefont
setfont
newpath
10 20 moveto
((llx,lly)) show

/Times-Roman findfont
30 scalefont
setfont
newpath
190 270 moveto
((urx,ury)) show
```

sebagaimana ditampilkan dalam gambar Contoh berkas EPS. Ukuran berkas EPS tersebut hanya 295 byte, bandingkan dengan ukuran berkas PNG yang bersangkutan, yaitu 1.664 byte (1.6 KB).

Rujukan
-------

* (Inggris) Encapsulated PostScript (EPS) File Format Specification Version 3.0 #5002 (PDF: 182k) Diarsipkan 2007-02-04 di Wayback Machine. May 1, 1992.
* (Inggris) The EPS file format specification on Adobe's website
* (Inggris) Paul Bourke, PostScript Tutorial[*pranala nonaktif permanen*], original November 1990, last updated December 1998.
* (Inggris) A First Guide to PostScript Diarsipkan 2005-03-07 di Wayback Machine. pjw 1/18/97.