[Next] [Previous] [Top]

Adobe Spezifikationen

B. Encapsulated PostScript File Format (3.0)


Die Firma Adobe Systems hat uns 1991 die Veröffentlichung dieser Spezifikation freundlicherweise genehmigt.

Das Encapsulated PostScript File (EPSF) Format ist ein Standard-Format für den Austausch von PostScript-Files zwischen Anwendungen auf verschiedenen Plattformen. Dieser Teil beschreibt die Einzelheiten des Formats und enthält besondere Informationen über die Umgebungen des Macintosh und von MS-DOS.

Das EPSF-Format basiert auf den Document Structuring Conventions (DSC) in Appendix G des Reference Manuals (Second Edition). Wenn sich ein PostScript-File an das EPSF-Format halten soll, dann müssen die DSC-Spezifikationen richtig befolgt werden.

Dieser Teil besteht aus folgenden Hauptthemen:

Schliesslich illustriert ein ausführliches Beispiel die in diesem Teil vorgestellten Konzepte.

B.1 Einführung

Ein EPS-File ist ein PostScript-Programm, welches das Aussehen einer einzelnen Seite beschreibt. Der Zweck des EPS-Files ist es normalerweise, von einer anderen PostScript-Seitenbeschreibung importiert oder eingebettet zu werden. Das EPS-File kann eine beliebige Kombination von Text, Grafik und Bild enthalten. Mit einigen Einschränkungen ist das EPS-File gleich einem PostScript-File. Abb. B.1 zeigt, wie ein EPS-File in ein anderes PostScript-Dokument eingebettet werden kann. Abbildung B.1:

Abbildung B.1: Dokument mit EPS-File

Anwendungen, die "conforming" EPS-Files erzeugen, müssen die Richtlinien in Abschnitt 2 "Richtlinien für das Erzeugen von EPS-Files" befolgen. Es gibt zwei erforderliche DSC-Kommentare, einige bedingt erforderlichen Kommentare, sowie mehrere Programmier-Richtlinien; diese stellen sicher, dass ein EPS-File in eine beliebige PostScript-Seitenbeschreibung importiert werden kann, ohne störende Seiteneffekte zu verursachen. Ein Beispiel eines Seiteneffektes ist das Löschen einer Seite des importierenden Dokuments oder das Beenden des ganzen Druckjobs.

Anwendungen, die EPS-Files importieren, müssen die Richtlinien in Abschnitt 3 "Richtlinien für das Importieren von EPS-Files" befolgen. Eine Anwendung, die ein EPS-File importiert, muss das EPS-File auf DCS-Kommentare absuchen und mindestens die Bounding Box und die Abhängigkeiten (Ressourcen) festhalten. Die Anwendung sollte zudem die Bildschirm-Darstellung einlesen und anzeigen - falls diese vorhanden ist. Enthält das EPS-File keine Bildschirm-Darstellung, dann muss die Anwendung eine Ersatz-Darstellung zur Verfügung stellen, damit der Benutzer das EPS-File am Bildschirm positionieren und transformieren kann. Die Anwendung darf die Manipulationen des Benutzers erst dann in PostScript-Befehle (translate, scale, etc.) umsetzen, wenn das Dokument auf den Drucker geschickt wird. Zudem muss die Anwendung ihre Stacks, das aktuelle Dictionary und den grafischen Status sichern, bevor das importierte EPS-File ausgeführt wird.

Beachten Sie, dass EPS-Files "final-form"-Darstellungen sind. Sind sie einmal in ein Dokument importiert, können sie nicht mehr editiert werden. Allerdings kann ein EPS-File als ganzes bis zu einem gewissen Grad manipuliert werden: Sie können ein EPS-File verschieben, drehen, vergrössern/verkleinern und zuschneiden.

Die Geräte-unabhängige Natur der PostScript-Sprache macht diese zu einem ausgezeichneten Austauschformat. Allerdings ist ein PostScript-Interpreter erforderlich, um ein EPS-File am Bildschirm betrachten zu können. Display PostScript ermöglicht es, EPS-Files dynamisch zu interpretieren. Dies garantiert eine höchstmögliche Qualität der Bildschirm-Darstellung, unabhängig von Vergrösserungsfaktor, Drehung und Bildschirm-Typ. Auf Plattformen ohne Display PostScript kann das EPS-File eine zusätzliche Bildschirm-Darstellung enthalten. Die optionale Bildschirm-Darstellung ist vom EPSF-Format ausdrücklich vorgesehen.

Das Format der Bildschirm-Darstellung unterscheidet sich je nach System. Es ist typischerweise eine PICT-Ressource des Macintosh, ein TIFF-File oder eine Geräte-unabhängige hexadezimale Bitmap. Wenn das EPS-File keine Bildschirm-Darstellung enthält, dann muss die importierende Anwendung eine Hilfsdarstellung zur Verfügung stellen, etwa ein graues Rechteck, das die Grösse der Illustration anzeigt. Mithilfe der Bildschirm-Darstellung kann der Endbenutzer das EPS-File im Dokument plazieren und skalieren.

Um EPS-Files zu unterstützen, braucht es die Zusammenarbeit zwischen der Anwendung, die EPS-Files erzeugt, und derjenigen, die EPS-Files verwendet. EPS-Files werden normalerweise von anderen Dokumenten importiert oder eingebettet.

Alle DSC-Kommentare in einem EPS-File stellen Informationen zur Verfügung. Wie eine Anwendung diese Informationen nutzt, ist Sache des Programmierers der importierenden Anwendung. Wenn Sie ein EPS-File importieren, reduzieren Sie den Informationsgehalt des EPS-Files bitte nicht, indem Sie DSC-Kommentare entfernen oder ändern. Grundsätzlich zeigen die Kommentare auf, welche Ressourcen und Spracherweiterungen wo im EPS-File verwendet werden. Encapsulated PostScript Files sind "final-form" Druckfiles, die nichts über den Drucker wissen, auf dem sie ausgedruckt werden. Falls ein EPS-File besondere Ressourcen benötigt, z.B. Fonts, dann müssen diese Erfordernisse sorgfältig erhalten und weitergegeben werden.

Eine Anwendung, die PostScript-Sprachfiles generiert, ist eine mögliche Verbraucherin und Erzeugerin von EPS-Files. Am besten dürfte es sein, nicht daran zu denken, dass man sich an einem bestimmten Ende der "Transportkette" befindet. Wenn Ihre Anwendung ein EPS-File importiert, dann ist sie verantwortlich für das Einlesen und Erkennen der Ressourcen, die vom EPS-File benötigt werden. Diese Erfordernisse sollten sich in den DSC-Kommentaren des importierenden Hauptdokuments widerspiegeln. Wenn z.B. das importierte EPS-File den Lithos-Font verwendet und der Rest des Dokuments in Times-Roman gesetzt ist, dann verwendet das Dokument jetzt ebenfalls den Lithos-Font, da das EPS-File importiert wurde. Diese Tatsache muss im äussersten %%DocumentNeededFonts-Kommentar im Hauptdokument festgehalten werden. Dies gilt sinngemäss auch für die Kommentare %%DocumentNeededResources:, %%LanguageLevel: und %%Extensions:.

B.2 Richtlinien für das Erzeugen von EPS-Files

Damit ein EPS-File als konform mit Version 3.0 betrachtet werden kann, muss es die in diesem Teil aufgestellten Regeln befolgen, es muss eine einzelne Seite beschreiben, das Dokument muss die DSC-Version 3.0 oder höher befolgen, und es hat die zwei erforderlichen DSC-Kommentare zu enthalten.

Erforderliche DSC-Kopfkommentare

Die zwei erforderlichen DSC-Kopfkommentare sind:

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: llx lly urx ury
Der erste der beiden Kopfkommentare informiert die einbettende Anwendung, dass das File die in diesem Teil beschriebene Version 3.0 des EPSF-Formates befolgt. Es handelt sich um den Version-Kommentar.

Der zweite erforderliche DSC-Kommentar gibt die Grösse des EPS-Files an. Dieser muss vorhanden sein, damit die importierende Anwendung die Illustration plazieren, vergrössern/verkleinern und zuschneiden kann. Es handelt sich um den Kommentar der Bounding Box.

Die vier Argumente des "Bounding Box"-Kommentars entsprechen der unteren linken Ecke (llx, lly) und der oberen rechten Ecke (urx, ury) der Bounding Box. Sie werden im PostScript-Koordinatensystem ausgedrückt (typografische Punkte). Die Bounding Box ist das kleinste Rechteck, das auf einer Einzelseite alle gezeichneten Elemente des EPS-Files umschliesst. Wenn Sie die Bounding Box berechnen möchten, müssen Informationen des grafischen Status, z.B. die aktuelle Strickstärke und der Parameter "line join", berücksichtigt werden.

Beispiel 1 zeigt ein minimal-konformes EPS-File, das ein Quadrat mit einer Strichstärke von 10 Einheiten zeichnet.

Beispiel B.1:

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 5 5 105 105
10 setlinewidth
10 10 moveto
0 90 rlineto 90 0 rlineto 0 -90 rlineto closepath
stroke
Abb. B.2 zeigt, wie die von Beispiel 1 gezeichneten Bildelemente im PostScript-Koordinatensystem positioniert sind. Falls die Strichstärke beim Berechnen der Bounding Box nicht berücksichtigt worden wäre, würde die Bounding Box auf jeder Seite des Quadrats um je fünf Einheiten von den korrekten Koordinaten abweichen. Dies könnte zu einem falsches Plazieren und Zuschneiden der importierten Illustration führen. Die in diesem Beispiel angegebene Bounding Box ist jedoch richtig.

Siehe Abbildung B.2:

Abbildung B.2: Die richtige Bounding Box berechnen

Unabhängig vom Koordinatensystem Ihrer Publishing-Anwendung können Sie die korrekte BoundingBox-Angabe wie folgt schätzen: drucken Sie die Seite, nehmen Sie einen Massstab, messen Sie den Abstand zur Illustration unten links, dann zur Illustration oben rechts, indem Sie die untere linke Ecke des Papierblatts als Ursprung nehmen. Diese Schätzung funktioniert, weil man dabei das Endresultat misst und keine Zwischenberechnung.

Bedingt erforderliche Kommentare

Es gibt mehrere DSC-Kommentare, die im Hinblick auf ein "conforming" EPS-File bedingt erforderlich sind. Ein EPS-File muss diese Kommentare enthalten, wenn bestimmte Eigenschaften vorhanden sind - z.B. Kommentare, die eine Bildschirm-Darstellung einschliessen oder die festhalten, dass im Interpreter bestimmte Sprach-Versionen oder Erweiterungen vorhanden sein müssen.

Die Kommentare %%Begin(End)Preview müssen die Bildschirm-Darstellung eines EPS-Files einklammern, wenn dieser Preview-Teil im Encapsulated PostScript Interchange (EPSI) Format dargestellt ist. Siehe Abschnitt 6 "Geräte-unabhängige Bildschirm-Darstellung" für Einzelheiten und für ein EPSI-Beispiel.

Der Kommentar %%Extensions: ist erforderlich, wenn das EPS-File einen PostScript-Interpreter benötigt, der bestimmte Spracherweiterungen unterstützt. Beispielsweise könnte das EPS-File CMYK-Farboperatoren enthalten und sollte daher auf einen Drucker geschickt werden, der diese Operatoren versteht. In diesem Fall muss das EPS-File den Kommentar %%Extensions: CMYK oder %%LanguageLevel: 2 enthalten.

Der Kommentar %%LanguageLevel: ist erforderlich, wenn das EPS-File Möglichkeiten von Level 2 verwendet, ohne eine allfällige Emulation zur Verfügung zu stellen. Aufgrund dieser Information kann die importierende Anwendung den Benutzer warnen und Fehler vermeiden, die von einem Level 1 Drucker generiert würden.

Falls das EPS-File Sprach-Erweiterungen oder Eigenschaften von Level 2 verwendet und eine vollständige Emulation dieser Eigenschaften durch Level 1 Operatoren anbietet, sind die Kommentare %%Extensions: und %%LanguageLevel: nicht nötig. Siehe Appendix D für die Strategie der Kompatibilität und Emulation.

Wenn das EPS-File irgendwelche Fonts, Files, Formulare, Precedure Sets oder andere Ressourcen benötigt, dann muss der entsprechende DSC-Kommentar im EPS-Kopf erscheinen. Siehe Appendix G.

Empfohlene Kommentare

Eine Anwendung oder ein Spooler kann freiwillig die allgemeinen Kopf-Kommentare %%Creator:, %%Title: und %%CreationDate: verwenden, um damit die entsprechenden Informationen zu liefern.

In einem EPS-File sind diese Kopf-Kommentare ausdrücklich empfohlen.

Ungültige und eingeschränkte Operatoren

Zusätzlich zu den statusdict- und userdict-Operatoren gibt es einige PostScript-Operatoren, die für EPS-unverträgliche System-Jobs und Seitenbeschreibungen gedacht sind. Neben sämtlichen Operatoren in statusdict und den Druckbereich-Operatoren in userdict dürfen folgende Operatoren nicht in einem EPS-File verwendet werden:

banddevice      exitserver    quit
clear           framedevice   renderbands
cleardictstack  grestoreall   setglobal
copypage        initclip      setpagedevice
erasepage       initgraphics  setshared
                initmatrix    startjob
Falls richtig angewendet, sind die folgenden Operatoren in einem EPS-File erlaubt. Der Gebrauch einer dieser Operatoren muss jedoch im Einklang mit den Regeln in Appendix I des Reference Manuals (1990) erfolgen. Ein falscher Gebrauch kann zu unvorhersehbaren Resultaten führen.

nulldevice sethalftone setscreen undefinefont
setgstate setmatrix settransfer 

Stacks und Dictionary

Die Operanden- und Dictionary-Stacks müssen in dem Zustand belassen werden, in dem sie sich vor der Ausführung des EPS-Files befanden. Das EPS-File darf keine resultierenden Objekte auf diesen Stacks hinterlassen. Alle in den Stack gestellten Operanden müssen entweder konsumiert oder mit dem Operator pop entfernt werden.

Es wird ausdrücklich empfohlen, dass ein EPS-File seine Definitionen in einem eigenen Dictionary ablegt. Es ist von Vorteil, wenn sich das importierte EPS-File sein eigenes Dictionary schafft, statt ins aktuelle Dictionary der importierenden Anwendung zu schreiben. Bei Level 1 Interpretern kann es sein, dass das Dictionary der importierenden Anwendung keinen Platz mehr für die EPS-Definitionen hat. Stellen Sie mit dem Operator end sicher, dass das Dictionary wieder vom Dictionary Stack entfernt wird, nachdem das EPS-File verarbeitet worden ist. Damit vermeiden Sie eine mögliche Fehlermeldung des Typs invalidrestore. Jedes Dictionary, welches das EPS-File mit dem begin-Operator in den Dictionary Stack gestellt hat, muss wieder mit dem entsprechenden end-Operator vom Dictionary Stack entfernt werden.

Achtung: Verwenden Sie nie die Operatoren clear oder cleardictstack, um die Stacks in einem EPS-File zu leeren. Eine derartige Putzaktion würde nicht nur Ihre Objekte von den Stacks entfernen, sondern könnte auch noch andere Objekte löschen.

Der Dictionary Such-Mechanismus durchsucht die Dictionary auf dem Dictionary-Stack. In einem EPS-File ist es illegal, für System-Namen diesen Mechanismus zu umgehen. Verwenden Sie nie einen Code des Typs:

/S systemdict /showpage get def % Illegal EPS code
Das Ueberlesen von Definitionen in der Publishing-Anwendung könnte zu falschen Resultaten im Hauptdokument führen.

Der grafische Status

Eine importierende Anwendung kann das PostScript-Koordinatensystem transformieren oder andere Aspekte des grafischen Status ändern, sodass sie sich nicht mehr im Default-Status befindet. Dies ermöglicht es der Anwendung, das Aussehen einer Illustration zu ändern, etwa die Illustration zu vergrössern/verkleinern, zuzuschneiden oder zu drehen.

Wenn das EPS-File Annahmen über den grafischen Status treffen würde (z.B. betreffend des aktuellen Clipping Path oder der Transformationsmatrix), dann könnte ein unerwartetes Ergebnis resultieren.

Im Hinblick auf den Import eines EPS-Files muss die Publishing-Anwendung den grafischen Status wie folgt setzen: aktuelle Farbe schwarz, Line Caps "square butt end", Line Joins "mitered", Strichstärke 1, Dash Pattern "solid", Miter Limit 10, und der aktuelle Pfad muss leer sein. Falls ein Level 2 Interpreter verfügbar ist, sollen Overprint und Stroke Adjust auf "false" gesetzt werden. Ein EPS-File darf annehmen, dass dies der Default-Zustand ist. Es liegt in der Verantwortlichkeit der importierenden Anwendung, einen korrekten grafischen Status zu garantieren.

Variablen initialisieren

PostScript-Programmierer verwenden für Variablen oder Prozeduren üblicherweise kurze Namen wie etwa "x". Dies kann zu Namenskonflikten führen, wenn ein EPS-File seine Variablen nicht initialisiert hat, bevor die Prozeduren definiert werden - besonders vor dem Binding von Prozeduren. Im folgenden Beispiel ist die Variable x nicht initialisiert, bevor die Prozedur proc1 sie verwendet. Da der Wert von x im importierenden Programm ein Operator ist, bewirkt bind, dass der Name x in der Prozedur proc1 durch den Operator lineto ersetzt wird. Dies führt zu einem stackunderflow-Fehler.

%!PS-Adobe-3.0
 ...Document prolog of including application...
/x /lineto load def 
        % Application defines x to be lineto
 ...More of document prolog and setup...
%%BeginDocument: GRAPHIC.EPS
 ...Document prolog and setup for EPS file...
/proc1 {     % Enter deferred execution mode
 /x exch def
 x 4 moveto
} bind def   % x associated with lineto after bind
4 proc1      % Execute proc1 and cause error
 ...Rest of EPS file...
%%EndDocument
 ...Rest of including application document...

Im folgenden Beispiel initialisiert das EPS-File korrekterweise die Variable x, bevor die Prozedur proc1 definiert wird:

%!PS-Adobe-3.0
 ...Document prolog of including application...
/x /lineto load def 
       % Application defines x to be lineto
 ...More of document prolog and setup...
%%BeginDocument: GRAPHIC.EPS
 ...Document prolog and setup for EPS file...
/x 0 def % Initialize variables before define procs
/proc1 {     % Enter deferred execution mode
 /x exch def
 x 4 moveto
} bind def    % x associated with lineto after bind
4 proc1       % Execute Proc1
 ...Rest of EPS file...
%%EndDocument
 ...Rest of including application document...

Portabilität sicherstellen

Obwohl in EPS-Files der Gebrauch von externen Ressourcen wie Fonts, Patterns, Files und Precedure Sets erlaubt ist, sind die portabelsten Files diejenigen, die nicht von externen Ressourcen abhängig sind. Wenn ein EPS-File beispielsweise ein eigenes Font-Encoding benötigt, dann sollte das EPS-File den Font selbst umkodieren.

EPS-Files dürfen sich nie auf Prozeduren abstützen, die in Applikations- oder Treiber-Prologen definiert sind, wie etwa im LaserPrep-File von Apple. Solche Definitionen können vorhanden oder nicht vorhanden sein, je nach erfolgten Aktionen des Hauptprogramms oder von vorherigen Jobs.

Da EPS-Files zwischen heterogenen Plattformen ausgetauscht werden, ist 7-Bit ASCII das empfohlene Format für Daten in EPS-Files. Obwohl Binärdaten erlaubt sind, ist Vorsicht am Platz, wenn Sie portable Daten erzeugen möchten. Der Gebrauch von binären Daten kann es verunmöglichen, über bestimmte Kommunikationskanäle auszudrucken. Binärdaten mit einer besonderen Bedeutung, wie etwa Flusskontrolle oder End-of-File, können in bestimmten Umgebungen Uebermittlungsprobleme verursachen. Das Zeichen Control-D wird in der seriellen und parallelen Kommunikation beispielsweise als End-of-File Marke verwendet. Da dieses Zeichen in seriellen und parallelen Umgebungen den Job abbricht, erzeugt der Vorsichtige kein EPS-File, das dieses Zeichen enthält.

Siehe Appendix D des Reference Manuals (1990) für die Richtlinien betreffend Kompatibilität mit "Level 1"-Interpretern, wenn Spracherweiterungen und Möglichkeiten von Level 2 genutzt werden.

Verschiedene Einschränkungen

EPS-Files dürfen keine Text-Zeilen enthalten, die länger als 255 Zeichen sind, ausschliesslich der Zeichen CR und LF.

CR ist das Zeichen Carriage Return (dezimal ASCII 13), LF das Zeichen Line Feed (dezimal ASCII 10).

Die Zeilen müssen mit einer der folgenden Zeichen-Kombinationen abgeschlossen werden: CR, LF, CR LF oder LF CR.

B.3 Richtlinien für das Importieren von EPS-Files

Dieser Abschnitt enthält Richtlinien, die von Anwendungen befolgt werden sollen, die EPS-Files importieren. Der erste Teil diskutiert das Anzeigen einer Illustration am Bildschirm. Der zweite Teil behandelt das Erzeugen des PostScript-Codes für den Drucker.

Dieser Abschnitt enthält mehrere Fragmente PostScript-Code. Ein vollständiges Beispiel mit allen diesen Segmenten findet sich in Abschnitt 7 "EPS-Beispiel".

Das Anzeigen eines EPS-Files

Es gibt mehrere Techniken, um ein EPS-File in ein Dokument zu importieren. Das folgende Szenario ist typisch:

  1. Wenn der Benutzer ein EPS-File importieren möchte, fragt die Anwendung nach dem Namen des zu importierenden Files.

  2. Die Anwendung öffnet das ausgewählte File und sucht es nach nützlichen Informationen ab. Falls einer der beiden erforderlichen Kopf-Kommentare fehlen sollte, warnt die Anwendung den Benutzer, dass das EPS-File nicht "conforming" ist, und bricht den Import ab.

  3. Der DSC Element-Typ (atend) kann verwendet werden, um die Bounding Box Angaben ans Ende des Files zu verschieben. Dies bedeutet, dass die Anwendung das EPS-File bis zum Kommentar %%Trailer absuchen muss, um die "Bounding Box"-Angaben zu gewinnen.

  4. Sind der Versionskommentar und der BoundingBox-Kommentar gefunden, dann sollte die Anwendung den Benutzer auffordern, das EPS-File zu positionieren. Sie sollte dann die Bildschirm-Darstellung anzeigen. Falls das EPS-File keine Bildschirm-Darstellung enthält, dann muss die Anwendung eine Hilfsdarstellung zur Verfügung stellen.

  5. Dabei genügt es, wenn die Anwendung ein graues Rechteck anzeigt, das die Grösse der Bounding Box ausweist und einige Informationen enthält. Zu diesen Informationen gehört mindestens der Titel des EPS-Files, der vom DSC-Kommentar %%Title: geliefert wird. Zusätzlich können weitere Informationen wie etwa %%Creator: und %%CreationDate: angezeigt werden.

Der BoundingBox-Kommentar hilft, den Verkleinerungsfaktor und die Dimensionen der Illustration zu berechnen. Die Anwendung sollte dem Benutzer erlauben, eine Plazierungsbox anzugeben, damit die Bildschirm-Darstellung oder das graue Rechteck am gewünschten Ort angezeigt werden kann.

Der BoundingBox-Kommentar kann helfen, das Verhältnis von Höhe zu Breite zu berechnen, damit der Benutzer die ursprünglichen Proportionen beibehalten kann, wenn er die Plazierungsbox angibt. Als Alternative kann die Anwendung die Bildschirm-Darstellung in voller Grösse anzeigen und anschliessend dem Benutzer ermöglichen, die Grafik zu verkleinern und zu verschieben. Unabhängig von der Methode sollte der Benutzer die Möglichkeit haben, entweder die Proportionen der Illustration zu erhalten oder aber die Illustration zu verziehen.

Ein zusammengesetztes PostScript-Programm erzeugen

Die folgenden Richtlinien sind zu beachten, wenn Sie ein zusammengesetztes PostScript-Programm erzeugen möchten, das ein importiertes EPS-File enthält.

Gebrauch von save und restore
Eine Anwendung sollte das importierte EPS-File mit einem save/restore-Konstrukt einkapseln. Dies dient dazu, das vom EPS-File belegte Virtual Memory (VM) wieder freizugeben und den grafischen Status wieder herzustellen.
showpage umdefinieren
Der Operator showpage ist in EPS-Files deshalb erlaubt, weil er in der Praxis in vielen PostScript-Files anzutreffen ist. Es ist vernünftig, den Operator showpage in einem EPS-File zu verwenden, obwohl es nicht notwendig ist, wenn das File in ein anderes Dokument exportiert wird. Es liegt in der Verantwortung der einbettenden Anwendung, den Operator showpage wirkungslos zu machen. Der showpage-Operator kann wie folgt umdefiniert werden:
           /showpage { } def
Den grafischen Status vorbereiten
Im Hinblick auf den Import eines EPS-Files muss die einbettende Anwendung den grafischen Status wie folgt setzen: aktuelle Farbe schwarz, Line Caps "square butt end", Line Joins "mitered", Strickstärke 1, Dash Pattern "solid", Miter Limit 10, der aktuelle Pfad sollte leer sein.
Dieser Status kann mit folgendem Code erreicht werden:
 0 setgray 0 setlinecap 1 setlinewidth
 0 setlinejoin 10 setmiterlimit [] 0 setdash
 newpath
Wenn Sie auf einen "Level 2"-Drucker ausgeben, dann müssen zusätzlich die Parameter overprint und stroke adjust auf "false" gesetzt werden. Der allfällig benötigte Code lautet:
   false setoverprint false setstrokeadjust
Achtung: Falls die Anwendung weiss, dass ein Parameter des aktuellen grafischen Status bereits im Default-Zustand ist, kann darauf verzichtet werden, den Parameter nochmals zu setzen, indem der entsprechende PostScript-Code ausgeführt wird.
userdict
Adobe Systems empfiehlt, dass eine importierende Anwendung den Operator begin aufruft, um eine Kopie von userdict zuoberst auf den Dictionary-Stack zu legen. Idealerweise schafft sich das importierte EPS-File sein eigenes Dictionary. Wenn nicht, könnte beim Definieren der Prozeduren ein dictfull-Fehler resultieren, falls das Dictionary der Anwendung zu wenig Platz hat für die Definitionen des EPS-Files. Nachdem das EPS-File ausgeführt ist, sollte die Anwendung die userdict-Kopie wieder vom Dictionary-Stack entfernen, indem sie den Operator end aufruft.
Den Operanden-Stack leeren
Die einbettende Anwendung muss dem EPS-File einen leeren Operanden-Stack überlassen. Das EPS-File darf vernünftigerweise erwarten, dass der gesamte Operanden-Stack zu seiner Verfügung steht. Wenn der ganze Operanden-Stack benötigt wird, aber nicht verfügbar ist, könnte ein Fehler des Typs stackoverflow resultieren. Falls der Operanden-Stack leer ist und das EPS-File einen überflüssigen clear-Befehl ausführen sollte, ist dies kein Problem.
Stacks schützen
Ein EPS-File sollte die Operanden- und Dictionary-Stacks in dem Zustand belassen, in welchem sie sich vor der Ausführung des EPS-Files befanden. Es könnte nun sein, dass dies nicht der Fall ist. Daher sollte die Anwendung vor dem Import die Anzahl Objekte auf dem Operanden- und Dictionary-Stack zählen. Nachdem das EPS-File ausgeführt ist, sollte die Anwendung sicherstellen, dass die Stacks dieselbe Anzahl Objekte enthalten wie vor dem Einbetten des EPS-Files.
Der folgende Code zeigt, wie man die Anzahl Objekte auf dem Dictionary- und Operanden-Stack erhält:
   /Dict_Count countdictstack def
   /Op_Count count def
EPS-File mit Kommentaren einklammern
Das eingebettete EPS-File muss mit den Kommentaren %%Begin(End)Document eingeklammert werden, siehe Appendix G des Reference Manuals.
Besondere Erfordernisse behandeln
Falls der Kopf des EPS-Files entweder den Kommentar %%LanguageLevel: oder %%Extensions: enthält, dann muss die Publishing-Anwendung zum Zeitpunkt des Druckens sicherstellen, dass der Drucker die besonderen Spracherweiterungen behandeln kann. Sollte die Anwendung feststellen, dass der Drucker nicht über die benötigten Eigenschaften verfügt oder dass deren Verfügbarkeit fraglich ist, dann sollte der Benutzer benachrichtigt und nach weiteren Aktionen gefragt werden. Es gilt: wenn eine Anwendung ein EPS-File eingebettet hat, das Erweiterungen benötigt, dann ist die Anwendung nun von denselben Erweiterungen abhängig. Dies muss sich im Kopf-Kommentar des Dokuments widerspiegeln.
Falls der Kopf des EPS-Files einen Kommentar %%DocumentNeededResources: oder %%DocumentNeededFonts: enthält, dann muss die Publishing-Anwendung vor dem Drucken sicherstellen, dass die Ressourcen vorhanden sind. Sollte eine dieser Ressourcen nicht verfügbar sein, dann sollte der Benutzer benachrichtigt und nach weiteren Aktionen gefragt werden. Dies bedeutet, dass der Benutzer die benötigte Ressource lokalisieren könnte oder dass der Benutzer oder der Druckmanager den Druckjob auf einen geeigneten Drucker umleiten könnte. Auch hier gilt: wenn eine Anwendung ein EPS-File eingebettet hat, das diese Kommentare benötigt, dann ist die Anwendung nun von denselben Ressourcen abhängig. Dies muss sich im Kopf-Kommentar des Dokuments widerspiegeln.
Transformation des Default-Koordinatensystems

Bevor ein EPS-File von einer Seitenbeschreibung eingebettet wird, muss die importierende Anwendung das PostScript-Koordinatensystem transformieren, je nachdem der Benutzer das EPS-File plazieren will. Die Reihenfolge der Transformationen ist:

  1. Verschiebe den Ursprung zum neuen, vom Benutzer bestimmten Ursprung.

  2. Rotation, falls der Benutzer das EPS-File gedreht hat.

  3. Skalierung, falls der Benutzer die Grösse verändert hat.

  4. Verschiebe die untere linke Ecke der Bounding Box an den vom Benutzer bestimmten Ursprung.

Einzelheiten zur Transformation des Koordinatensystems folgen unten. Das erste Beispiel stellt den einfachen Fall dar, bei dem das Benutzer-Koordinatensystem mit dem Default-Koordinatensystem übereinstimmt. Das zweite Beispiel zeigt den allgemeinen Fall einer Transformation des "Application Space" zum Default-Koordinatensystem.

Abb. B.3 illustriert ein EPS-File und seine Bounding Box über einer Dokument-Seite. Das EPS-File wird so gezeigt, als sei es ohne vorgängige Transformation des Koordinatensystems gezeichnet. Die Plazierungsbox im oberen rechten Teil der Seite deutet an, wo der Benutzer das EPS-File positionieren möchte.

Siehe Abbildung B.3:

Abbildung B.3: EPS-File und Plazierungsbox

Abbildung B.4 besteht aus drei Diagrammen, die in Schritten zeigen, wie das PostScript-Koordinatensystem transformiert und skaliert werden muss, um die vom Benutzer gewünschte Plazierung auf der Seite zu erreichen.

Abbildung B.4: neuer Ursprung, verkleinern, Position

Angenommen, die im Kopf des EPS-Files angegebene Bounding Box sei

%%BoundingBox: -100 -100 100 100
dann würde der folgende PostScript-Code das EPS-File auf der Seite richtig plazieren:

400 400 translate % Translate to new origin
.8 .8 scale       % Scale to fit "placement box"
100 100 translate % -llx -lly translate
Diese Transformation muss in den PostScript-Strom eingefügt werden, bevor das EPS-File zum Drucker geschickt wird.

Die Abbildungen B.3 und B.4 und das entsprechende Code-Fragment gehen davon aus, dass das Koordinatensystem der Anwendung mit dem Default-Koordinatensystem übereinstimmt. Der folgende Abschnitt diskutiert eine allgemeinere Transformation des Koordinatensystems.

Allgemeine Transformation des Koordinatensystems

Typischerweise transformiert eine Anwendung das PostScript-Koordinatensystem so, dass die gewöhnlichen Zeichnungseinheiten im "Application Space" als Operanden von aufgerufenen PostScript-Operatoren verwendet werden können.

Betrachte Abbildung B.5, die ein beliebiges Koordinatensystem einer Anwendung sowie eine Plazierungsbox für ein EPS-File darstellt.

Abbildung B.5: Koordinatensystem der Anwendung

Um das PostScript-Koordinatensystem an das Koordinatensystem der Anwendung (Application Space) anzupassen, könnte folgendes Code-Fragment ausgeführt werden:

0 792 translate
1 -1 scale
Dies setzt voraus, dass jede Einheit im "Application Space" gleich einer PostScript-Einheit ist. Würde eine Einheit der Applikation fünf PostScript-Einheiten entsprechen, dann sähe die Transformation wie folgt aus:

0 792 translate
5 -5 scale
Angenommen, das Koordinatensystem sei bereits entsprechend des Koordinatensystems der Anwendung transformiert und skaliert worden, kann das EPS-File in folgenden Schritten in die vom Benutzer gewünschte Box plaziert werden:

  1. left bottom translate

  2. ((right - left)/(urx - llx)) (top - bottom)/(ury - lly) scale

  3. -(llx) -(lly) translate

Dabei sind bottom, left, top und right die Koordinaten der Plazierungsbox im "Application Space"; und llx, lly, urx und ury sind die Bounding Box Parameter, die vom EPS-File geliefert werden.

Ein letztes Beispiel geht davon aus, dass das PostScript-Koordinatensystem bereits entsprechend des Koordinatensystems der Anwendung transformiert wurde. Die Bounding Box des EPS-Files sei

%%BoundingBox: 20 20 100 100
und der Benutzer wünsche die Plazierungsbox wie in Abbildung B.5. Wenn Sie die obige Formel verwenden, ist die Transformation vor der Ausführung des EPS-Files wie folgt:

20 60 translate
.5 -.5 scale
-20 -20 translate
Einen Clipping Path aufsetzen

Die importierende Anwendung sollte um das EPS-File herum einen "Clipping Path" aufsetzen. Dies kann erreicht werden, indem Sie den "Clipping Path" an die Bounding Box des eingebetteten EPS-Files angleichen, nachdem die Transformationen des PostScript-Koordinatensystem gemacht worden sind. Oder der Benutzer könnte einen beliebigen "Clipping Path" angeben, um besondere Effekte zu erreichen.

Die Bildschirm-Darstellung wegwerfen

Falls ein EPS-File eine Bildschirm-Darstellung im EPSI-Format enthält, sollte die importierende Anwendung diese Darstellung entfernen, bevor das Dokument auf den Drucker zugeladen wird. Obwohl die EPSI-Darstellung in Form von PostScript-Kommentaren spezifiziert ist und dem Drucker daher keine Probleme bereiten würde, bräuchte es zusätzliche Zeit für die Uebertragung des Preview-Teils.

Sollte die Bildschirm-Darstellung des EPS-Files im Macintosh PICT-Format sein, schicken Sie die PICT-Ressource nicht auf den Drucker mit. Wenn der Preview-Teil im TIFF-Format oder im MS Windows Metafile-Format ist, denken Sie daran, den PostScript-Code zu extrahieren und auf den Drucker zu senden. Siehe Abschnitt 5.2 "Windows Metafile oder TIFF" für Einzelheiten.

Enthält das EPS-File keine Bildschirm-Darstellung (Preview-Teil), dann kann das Druckfile, das auf den PostScript-Drucker geschickt wird, das ganze EPS-File enthalten.

Kompatibilität mit Version 2.0

Die EPSF-Version 3.0 verlangt, dass ein EPS-File die Operanden- und Dictionary-Stacks so hinterlässt, wie diese vor der Ausführung des EPS-Files waren. In früheren Versionen des EPSF-Formates war dies allerdings nicht ausdrücklich vorgeschrieben. Stellen Sie daher sicher, dass die Anzahl Objekte auf den Dictionary- und Operanden-Stacks gezählt werden, bevor die Anwendung das EPS-File importiert. Nachdem das EPS-File ausgeführt ist, sollten die Stacks dieselbe Anzahl Objekte enthalten wie vor dem Importieren.

Vorbereitung für das Einbetten eines EPS-Files

Beispiel 2 zeigt die Prozedur BeginEPSF, welche eine Anwendung verwenden könnte, um das Einbetten eines EPS-Files vorzubereiten. Die Prozedur BeginEPSF ist vor dem EPS-File auszuführen.

Beispiel B.2:

/BeginEPSF { %def
 /b4_Inc_state save def 
          % Save state for cleanup
 /dict_count countdictstack def 
          % Count objects on dict stack
 /op_count count 1 sub def 
          % Count objects on operand stack
 userdict begin  
          % Push userdict on dict stack
 /showpage {} def 
          % Redefine showpage, null proc
 0 setgray 0 setlinecap 
          % Prepare graphics state
 1 setlinewidth 0 setlinejoin
 10 setmiterlimit [] 0 setdash newpath
 /languagelevel where % If level not equal to 1 then
 {pop languagelevel  % set strokeadjust and
 1 ne           % overprint to their defaults
  {false setstrokeadjust false setoverprint
  } if
 } if
} bind def
Beispiel 3 zeigt die Prozedur EndEPSF, die den PostScript-Status wieder so herstellt, wie er vor dem Einbetten und Ausführen des EPS-Files war. Die Prozedur EndEPSF ist nach dem EPS-File auszuführen.

Beispiel B.3:

/EndEPSF { %def
 count op_count sub {pop} repeat % Clean up stacks
 countdictstack dict_count sub {end} repeat
 b4_Inc_state restore
} bind def
Beispiel 4 illustriert den Gebrauch der Prozeduren BeginEPSF und EndEPSF.

Beispiel B.4:

BeginEPSF % Prepare for the included EPS file
left bottom translate % Place the EPS file
angle rotate
Xscale Yscale scale
-llx -lly translate
...Set up a clipping path...
%%BeginDocument: MyEPSFile
...Included EPS file here...
%%EndDocument
EndEPSF   % Restore state, and cleanup stacks

B.4 Filetypen und Namensgebung

EPS-Files sind zum Standard-Format für den Import/Export von PostScript-Files zwischen Anwendungen in verschiedenen Umgebungen geworden. Dieser Abschnitt liefert besondere Informationen über Filetypen und Namenskonventionen in verschiedenen Umgebungen.

Apple Macintosh Filesystem

Der Filetyp für von Macintosh-Anwendungen erzeugte PostScript-Files ist EPSF. Der Filetyp TEXT ist ebenfalls erlaubt, sodass die Anwender ein EPS-File mittels eines Standard-Texteditors erstellen können, wobei die "Document Structuring Conventions" aber eingehalten werden müssen. Ein File des Typs EPSF sollte zusätzlich eine PICT-Ressource mit einer Bildschirm-Darstellung des EPS-Files enthalten. Der Filename kann gemäss einer beliebigen Namenskonvention gebildet werden, solange der Filetyp EPSF ist. Falls der Filetyp TEXT ist, sollen die Extensionen .epsf und .epsi für EPS-Files mit Macintosh-spezifischen beziehungsweise Geräte-unabhängigen Bildschirm-Darstellungen verwendet werden. Siehe Abschnitt B.5 "Geräte-abhängige Bildschirm-Darstellung" und Abschnitt B.6 "Geräte-unabhängige Bildschirm-Darstellung".

MS-DOS und PC-DOS Filesystem

Die empfohlene File-Extension ist .EPS. Für EPS-Files mit einer EPSI-Bildschirm-Darstellung ist die empfohlene Extension .EPI. Da Name und Extension vom Benutzer gewählt werden können, empfiehlt Adobe Systems, dass die Anwendung eine Default-Extension .EPS anbietet, oder .EPI, sollte das File ein EPSI-Preview enthalten.

Andere Filesysteme

Obwohl die Namensgebung vom Filesystem abhängt, ist die Extension .epsf die beste Art, ein EPS-File zu bezeichnen. Desgleichen ist .epsi die beste Extension für das EPSI-Austauschformat.

In Systemen, die Kleinbuchstaben nicht kennen oder nicht als signifikant behandeln, können Grossbuchstaben verwendet werden.

B.5 Geräte-abhängige Bildschirm-Darstellung (Preview)

Vorbemerkung des Autors: Falls eine Workstation über Display PostScript verfügt, brauchen die EPS-Files keine separaten Bildschirm-Darstellungen zu enthalten.

Das EPS-File hat gewöhnlich eine grafische Bildschirm-Darstellung, die es dem Benutzer erlaubt, die Illustration am Bildschirm anzuzeigen und zu transformieren, bevor die Seite ausgedruckt wird. Abhängig von den Möglichkeiten der importierenden Anwendung kann der Benutzer diese Bildschirm-Darstellung des EPS-Files plazieren, skalieren, zuschneiden und drehen. Die Publishing-Software sollte diese Transformationen registrieren und im PostScript-Code abbilden, der schliesslich auf den Drucker zugeladen wird.

Das genaue Format der Bildschirm-Darstellung ist Maschinen-abhängig. Das heisst, dass jede Computer-Plattform oder Umgebung ihr bevorzugtes "Screen Representation Image" Format kennt, welches meist die geeignete Bildschirm-Darstellung für die entsprechende Umgebung ist. Zusätzlich ist in Abschnitt 6 "Geräte-unabhängige Bildschirm-Darstellung" das EPSI-Format spezifiziert. Adobe Systems empfiehlt, dass alle Anwendungen dieses Format unterstützen.

Apple Macintosh: PICT-Ressource

Eine QuickDraw-Darstellung des PostScript-Files kann erzeugt und als PICT in der Ressource-Fork des Files abgelegt werden. Es sollte die Ressource-Nummer 256 erhalten. Wenn das PICT existiert, kann die einbettende Anwendung es als Bildschirm-Darstellung verwenden. Wenn Pictframe in das PostScript-Koordinatensystem übertragen wird, sollte es mit den BoundingBox-Angaben übereinstimmen.

Aufgrund der grössenmässigen Beschränkung der PICT-Bilder werden diese Angaben bei grossen Illustrationen nicht immer übereinstimmen. Wenn es einen Widerspruch gibt, dann soll %%BoundingBox als wahr gelten, da die Bounding-Box-Angaben genau denjenigen Bereich ausweisen, der durch den PostScript-Code geschwärzt wird.

Windows Metafile oder TIFF-File

Entweder ein Microsoft Windows Metafile oder ein TIFF-Teil (Tag Image File Format) kann als Bildschirm-Darstellung in einem EPS-Files eingefügt sein.

Das EPS-File hat einen binären Kopf am Fileanfang, der eine Art Inhaltsverzeichnis liefert. Dies ist notwendig, weil es im Filesystem keine zweite "Fork" gibt wie beim Macintosh.

Achtung: In der DOS-Umgebung ist es immer erlaubt, ein reines PostScript-File in ASCII als EPS-File zu haben (ohne Preview-Teil).

Die importierende Anwendung sollte die ersten vier Bytes des Files prüfen. Wenn diese mit dem Kopf - wie unten gezeigt - übereinstimmen, dann kann der binäre Kopf erwartet werden, und damit eine Bildschirm-Darstellung. Falls die ersten zwei Bytes "%!" sind, dann handelt es sich um ein reines PostScript-File in ASCII-Text.

Binärkopf eines EPS-Files im DOS:

Bytes  Beschreibung
  0-3  Must be hex C5D0D3C6 (byte 0=C5)
  4-7  Byte position in file for start of
       PostScript code section.
  8-11 Byte length of PostScript section
 12-15 Byte position in file for start of
       Metafile screen representation.
 16-19 Byte length of Metafile section
       (PSize)
 20-23 Byte position of TIFF representation
 24-27 Byte length of TIFF section
 28-29 Checksum of header
       (XOR of bytes 0-27).
       Note: if Checksum is FFFF then ignore it
Es wird angenommen, dass entweder Position und Länge von Metafile oder aber Position und Länge von TIFF null sind. Daraus folgt, dass nur eine der beiden Formen im EPS-File enthalten sein kann.

Das Metafile sollte die Richtlinien von MS Windows befolgen. Im einzelnen sollte es weder "viewport" noch "mapping mode", jedoch "window origin" und "extent" setzen. Die importierende Publishing-Anwendung hat das Bild so zu skalieren, dass die Dimensionen den BoundingBox-Angaben im EPS-File entsprechen.

B.6 Geräte-unabhängige Bildschirm-Darstellung (Preview)

Dieses Bildschirm-Format dient als Austauschformat zwischen Systemen, die sehr unterschiedlich sein können. Dabei ist der Bitmap-Teil für das Preview sehr einfach und wird hexadezimal in ASCII-Text dargestellt, sodass er leicht transportierbar ist. Dieses Format wird als "Encapsulated PostScript Interchange" oder EPSI bezeichnet.

Ein EPSI-File ist wirklich transportierbar und erfordert kein besonderes Programm für das Dekomprimieren oder für ein Erkennen des Bitmap-Teils. Lediglich die hexadezimale Schreibweise (hex. FF = 255) muss verstanden werden.

Die Kommentare %%BeginPreview: width height depth lines und %%EndPreview umklammern die Bildschirm-Darstellung eines EPSI-Files. Die Felder width und height geben die Anzahl Bildpunkte (Pixels) für das Preview an. Das Feld depth besagt, wieviele Datenbits verwendet werden, um einen Bildpunkt darzustellen (1, 2, 4 oder 8). Ein 100 Pixel breites Bild hat immer die Zahl 100 im Feld width, obwohl sich die Anzahl benötigter hexadezimaler Bytes je nach depth ändert. Das Feld lines gibt an, wieviele Zeilen hexadezimaler Code der Preview-Teil enthält, sodass diese Zeilen leicht übersprungen werden können, falls sich eine Anwendung nicht dafür interessiert. Alle Argumente sind ganze Zahlen.

Die Bit-Reihenfolge der Bildschirm-Darstellung ist die gleiche wie die vom image-Operator verwendete. Das heisst, dass ein Preview sein eigenes Koordinatensystem hat. Die rechteckige Begrenzung der Bildschirm-Darstellung hat ihre linke untere Ecke an Position (0,0) und ihre rechte obere Ecke an Position (width, height). Die Byte-Reihenfolge ist fest, und sollte von (0,0) nach (width-1, 0) gehen, dann von (0,1) nach (width-1, 1), etc.

Beispiel unisiegel.epsi

Richtlinien für EPSI-Files

Die folgenden Richtlinien versuchen, die wenigen Grundannahmen zu erläutern. Das Format sollte extrem einfach sein, weil das Ziel der Austausch ist. Kein System sollte viel mit dem Entschlüsseln zu tun haben. Dieses Format wurde daher absichtlich einfach und optionsfrei gehalten.

Das Beispiel 5 zeigt ein File mit dem EPSI-Format. Ein Byte besteht bekanntlich aus 8 Bits und wird in der hexadezimalen Schreibweise mit zwei hex. Ziffern dargestellt. Die Bildbreite von 80 Pixel erfordert daher 20 hexadezimale Ziffern, nämlich (80/8) mal 2. Wie den PostScript-Zeilen am Schluss entnommen werden kann, zeichnet das PostScript-Segment lediglich einen Kasten.

Beispiel B.5:

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 80 24
%%Pages: 0
%%Creator: John Smith
%%CreationDate: November 9, 1990
%%EndComments
%%BeginPreview: 80 24 1 24
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FF0000000000000000FF
%FF0000000000000000FF
%FF0000000000000000FF
%FF0000000000000000FF
%FF0000000000000000FF
%FF0000000000000000FF
%FF0000000000000000FF
%FF0000000000000000FF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%%EndPreview
%%EndProlog
%%Page: "one" 1
 4 4 moveto
 72 0 rlineto 0 16 rlineto -72 0 rlineto closepath
 8 setlinewidth stroke
%%EOF

B.7 EPS-Beispiel

Das folgende Beispiel illustriert den richtigen Gebrauch der DSC-Kommentare in einer typischen Seitenbeschreibung, die erzeugt werden könnte, wenn eine Anwendung ein EPS-File einbettet. Das EPS-File sei wie folgt dargestellt:

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 4 4 608 407
%%Title: (ARTWORK.EPS)
%%CreationDate: (10/17/89) (5:04 PM)
%%EndComments
...PostScript code for illustration...
showpage
%%EOF

In diesem Fall sieht die von der Anwendung erzeugte Seitenbeschreibung mit dem eingebetteten EPS-File wie folgt aus:

%!PS-Adobe-3.0
%%BoundingBox: 0 0 612 792
%%Creator: SomeApplication
%%Title: (Smith.Text)
%%CreationDate: 11/9/89 (19:58)
%%Pages: 1
%%DocumentFonts: Times-Roman Times-Italic
%%DocumentNeededFonts: Times-Roman Times-Italic
%%EndComments
 
%%BeginProlog
/ms {moveto show} bind def
/s /show load def
/SF {%/FontIndex FontSize /FontName SF --
 findfont exch scalefont dup setfont def
} bind def
/sf /setfont load def
/rect {% llx lly w h % Used to create a clipping path
 4 2 roll moveto
 1 index 0 rlineto
 0 exch rlineto
 neg 0 rlineto
 closepath
} bind def
 
/BeginEPSF { %def
 /b4_Inc_state save def 
               % Save state for cleanup
 /dict_count countdictstack def 
               % Count objects on dict stack
 /op_count count 1 sub def 
               % Count objects on operand stack
 userdict begin 
               % Push userdict on dict stack
 /showpage {} def 
               % Redefine showpage, null proc
 0 setgray 0 setlinecap 
               % Prepare graphics state
 1 setlinewidth 0 setlinejoin
 10 setmiterlimit [] 0 setdash newpath
 /languagelevel where 				% If level not equal to 1 then
 {pop languagelevel 				% set strokeadjust and
 1 ne            				% overprint to their defaults.
  {false setstrokeadjust false setoverprint
  } if
 } if
} bind def

/EndEPSF { %def
 count op_count sub {pop} repeat % Clean up stacks
 countdictstack dict_count sub {end} repeat
 b4_Inc_state restore
} bind def
%%EndProlog
 
%%BeginSetup
%%IncludeFont: Times-Roman
%%IncludeFont: Times-Italic
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
/pgsave save def
%%EndPageSetup
/F1 40 /Times-Roman SF
...Set some text with F1...
/F2 40 /Times-Italic SF
...Set some text with F2...
F1 sf
...Set some more text with F1...
F2 sf
...Set some more text with F2...
BeginEPSF
65.2 10 translate 			% Position the EPS file
.80 .80 scale     			% Scale to desired size
-4 -4 translate  			% Move to lower left of the EPS
4 4 604 403 rect  			% Set up clipping path
clip newpath      			% Set the clipping path
 
%%BeginDocument: ARTWORK.EPS
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 4 4 608 407
%%Title: (ARTWORK.EPS)
%%CreationDate: (10/17/89) (5:04 PM)
%%EndComments
...PostScript code for illustration...
showpage
%%EOF
%%EndDocument
 
EndEPSF
pgsave restore % restore state, cleanup stacks
showpage
%%EOF

B.8 Aenderungen seit Version 2.0

In dieser Spezifikation wurden die detaillierten Beschreibungen der DSC-Kommentare weggelassen. Wenn Sie eine Anwendung entwickeln möchten, die EPS-Files unterstützen soll, dann beachten Sie die DSC-Version 3.0 (Document Structuring Conventions).

Die folgenden bedingt erforderlichen DSC-Kommentare gehören neu zur EPSF-Version 3.0:

%%Extensions:
%%LanguageLevel:
%%DocumentNeededResources:
%%IncludeResource:
%%Begin(End)Document:

Aenderungen bezüglich Anwendungen, die EPS-Files erzeugen

Um Zweideutigkeiten zu vermeiden, wurde der Abschnitt B.2 "Guidelines for Creating EPS Files" hinzugefügt. Dieser neue Abschnitt enthält verschiedene Richtlinien für das Erzeugen von EPS-Files. Das Befolgen dieser Richtlinien hilft, ein EPS-File so in ein Dokument zu importieren, dass schädliche Seiteneffekte vermieden werden. Zudem erlauben es diese Regeln, leicht festzustellen, ob ein EPS-File mit der EPSF-Version 3.0 kompatibel ist. Es folgt ein Ueberblick über die neuen Richtlinien:

Aenderungen bezüglich Anwendungen, die EPS-Files importieren

Um die Verantwortlichkeiten einer importierenden Anwendung zu beleuchten, spezifiziert der Abschnitt B.3 "Guidelines for Importing EPS Files" die folgenden neuen Regeln:

B.1 Einführung
B.2 Richtlinien für das Erzeugen von EPS-Files
Erforderliche DSC-Kopfkommentare
Bedingt erforderliche Kommentare
Empfohlene Kommentare
Ungültige und eingeschränkte Operatoren
Stacks und Dictionary
Der grafische Status
Variablen initialisieren
Portabilität sicherstellen
Verschiedene Einschränkungen
B.3 Richtlinien für das Importieren von EPS-Files
Das Anzeigen eines EPS-Files
Ein zusammengesetztes PostScript-Programm erzeugen
B.4 Filetypen und Namensgebung
Apple Macintosh Filesystem
MS-DOS und PC-DOS Filesystem
Andere Filesysteme
B.5 Geräte-abhängige Bildschirm-Darstellung (Preview)
Apple Macintosh: PICT-Ressource
Windows Metafile oder TIFF-File
B.6 Geräte-unabhängige Bildschirm-Darstellung (Preview)
Richtlinien für EPSI-Files
B.7 EPS-Beispiel
B.8 Aenderungen seit Version 2.0
Aenderungen bezüglich Anwendungen, die EPS-Files erzeugen
Aenderungen bezüglich Anwendungen, die EPS-Files importieren
Beispiel unisiegel.epsi
Adobe Spezifikationen - 02 NOV 94
[Next] [Previous] [Top]

Generated with WebMaker