2017-05-12 2 views
0

Ich möchte eine mehrseitige PostScript-Datei von Graphics2D in Java erstellen. Ich habe derzeit Java-Code, der für jede Seite in ein Graphics2D-Objekt schreibt. Mit der EPSGraphics-Bibliothek kann ich damit ein EPS-Objekt für jede Seite erstellen.Java: Wie erstelle ich eine PostScript-Datei von EPS?

Wie baue ich dann eine PostScript-Datei aus dieser Sammlung von EPS-Objekten?

Hinweis: Ich bin nicht fragen, was ist die beste Bibliothek, dies zu tun, wenn das der Ansatz ist und mehrere existieren. Ich frage nur, wie das geht.

+0

„Gibt es eine Java-Bibliothek, die diese und/oder eine Web-Seite tut das, was erklärt zu tun?“ Diese Art von Frage ist das Off-Thema, das du umformulieren solltest. Vielleicht: https://xmlgraphics.apache.org/commons/postscript.html#generator –

Antwort

2

Jede EPS-Datei hat eine BoundingBox als Kommentar (möglicherweise auch eine HiResBoundingBox) Sie müssen die Kommentare lesen, die Ihnen die Größe (in PostScript-Punkten) jedes EPS mitteilen.

Sie müssen dann entscheiden, wie Sie jedes EPS zeichnen möchten (beachten Sie, ein EPS ist eine einzelne Figur nicht eine Seite). Mit der Boundingbox bestimmen Sie, wo auf der Seite die Figur platziert werden soll. Sie speichern dann den aktuellen Grafikzustand, schreiben Maßstab, übersetzen und drehen die Operatoren, um die EPS auf der Seite zu platzieren, und führen dann einen Grestore aus.

Wenn Sie mehrere EPS-Abbildungen pro Seite wünschen, wiederholen Sie die Schritte für jede Abbildung.

Schreiben Sie am Ende der Seite den showpage-Operator, um die Seite zu rendern und auszuwerfen. Wiederholen Sie für die nächste Seite.

So soll Ihr letztes Postscript-Programm in etwa so aussehen:

%!PS 
gsave 
x y translate 
x y scale 

% Insert the entire content of the first EPS here 
% 

%!PS_Adobe_EPSF.... 
.... 
.... 
%%EOF 

grestore 


gsave 
x y translate 
x y scale 

% Insert the entire content of the second EPS here (if required) 
% 

%!PS_Adobe_EPSF.... 
.... 
.... 
%%EOF 
... 
... 

grestore 
showpage 

%% Begin page 2, repeat as above 

showpage 
+0

Also ist die Bounding Box in Punkten dann? Das macht Sinn. Das ist wie EMF, das ebenfalls vektorbasiert ist, aber eine festgelegte Größe hat (was natürlich ignoriert werden kann). Vielen Dank. –

Verwandte Themen