Einstellen der BoundingBox der EPS-Datei?
Möchte ich Ernte-main-Gebiet von einer PS
oder PDF
- Datei zum erstellen einer EPS
Datei ohne Leerzeichen. Befehle von ghostrcipt
, ps2pdf
, epstools
Ernte der Haupt-Zeichnung aus der Dokument-Datei.
Das problem ist, dass Sie nur die Ernte in Ihrer ursprünglichen form, sondern ich möchte eine EPS-Datei mit BoundingBox 0 0 x y
; beschnitten und verschoben, um der linken unteren Ecke.
Den Unterschied, den ich, wenn wir wollen, legen Sie die resultierende EPS-Datei in ein PS-Dokument. Wenn BoundingBox x0 y0 x y
, das PS-Dokument fügt der EPS-Datei am Punkt x0 y0, statt wo wir sind.
BEISPIEL:
Betrachten Sie eine einfache PS
Datei als
%!
/Times-Roman findfont
11 scalefont setfont
72 700 moveto
(This is a test)show
wenn die Konvertierung in EPS
mit einem Befehl wie
ps2eps test.ps test.eps
Wird es produzieren
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 72 700 127 708
%%HiResBoundingBox: 72.000000 700.000000 127.000000 707.500000
%%EndComments
% EPSF created by ps2eps 1.68
%%BeginProlog
save
countdictstack
mark
newpath
/showpage {} def
/setpagedevice {pop} def
%%EndProlog
%%Page 1 1
/Times-Roman findfont
11 scalefont setfont
72 700 moveto
(This is a test)show
%%Trailer
cleartomark
countdictstack
exch sub { end } repeat
restore
%%EOF
Es wurde beschnitten, in seiner ursprünglichen Koordinaten und der daraus resultierenden BoundingBox
ist 72 700 127 708
. Nun, wenn Sie versuchen, fügen Sie diese EPS
Datei in einem PS
Dokument, versucht das nest zu dieser Koordinate.
Wird es nützlich sein, wenn Sie eine EPS
- Datei mit BoundingBox: 0 0 55 8
. Natürlich, alle Zeichnung die Koordinaten (hier moveto) müssen geändert werden mit dieser neuen Referenz.
HINWEIS: Wie gesagt, mein Ziel von der Festsetzung der BoundingBox Bezugspunkt zu machen, kann in PS-Dokument. So, eine alternative Antwort auf diese Frage lautet: wie legen Sie eine EPS-Datei in PS-Dokument unabhängig von seiner BoundingBox.
Zum Beispiel, wie wenn Sie diese EPS-Datei am Speicherort 200 200 255 208
von einem PS-Dokument. Ich versuche, legen Sie die EPS mit dem folgenden code, aber es wird nicht funktionieren, es sei denn, die BoundingBox ist gestartet 0 0
:
200 200 translate
save
/showpage {} bind def
(test.eps)run
restore
Der Fall ist allgemein, aber ich will mein problem beschrieben mit Beispielen.
InformationsquelleAutor Googlebot | 2012-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was einfach un-übersetzen?
Entweder in das eps selbst, oder in der prep-Abschnitt, bevor Sie die Aufnahme?
Umständlich!
Den folgenden Typoskript zeigt ein awk-Skript führt die gewünschten änderungen
die eps-Führungen durch die DSC-Kommentare (genau wie Mama verwendet werden, um zu tun!).
Der Vorteil ist: wenn können Sie garantieren, dass die input-EPS entspricht ausreichend, um das DSC zu sorgen, dass diese Marker wird dieser Ansatz Größenordnungen schneller, als durch die Datei durch ghostscript.
Einfachheit ist auch der Vorteil und die Beschränkung des Programms. Es scannt für DSC-Kommentare, extrahiert Werte aus den BoundingBox-Kommentar, unterdrückt die HiResBoundingBox, und fügt postscript 'übersetzen' und 'rectclip' commnds nur nach der Seite kommentieren. Dies sollte die richtigen Ergebnisse so lange, wie der EPS ist wirklich bona-fide. Aber die ghostscript-Ansatz in die andere Antwort wird zu Ergebnissen führen, die auf input-Dateien mit weniger zuverlässigen DSC-Konformität (weil es keine Verknüpfungen, es behandelt DSC als Kommentar und ignoriert völlig).
Streng genommen die 'rectclip' sollte nicht nötig sein, aber die Frage verlangt, dass die Ausgabe "beschnitten".
Der Allgemeine Ansatz ist das Lesen der %%BoundingBox-Kommentare und die GM richtig vor dem einsetzen der EPS. Es ist auch gängige Praxis, um ein clip auf der BoundinBox (obwohl dies nicht notwendig sein sollte) und neu zu definieren, showpage, um eine null-operation, aber auch dies sollte nicht erforderlich sein, eine korrekte EPS. Trotzdem viele " EPS " - Dateien sind nicht wirklich kompatibel. Der grundlegende Punkt ist, dass die EPS-Verbraucher erforderlich ist, um Lesen und danach handeln die Kommentare.
siehe meine Ghostscript-Befehle für einen "Allgemeinen Ansatz".
Ich habe aktualisiert mit einem programmatischen Beispiel. Es ist eine einfache Aufgabe, die ein einfaches Programm, IMHO.
InformationsquelleAutor luser droog
Konvertieren einer EPS mit der BoundingBox-Stil, den Sie wollen, ich würde Ghostscript und lassen Sie die EPS machen eine hin-und Rückfahrt: EPS => PDF => EPS.
Der trick ist, um sicherzustellen, dass die PDF-Datei verwendet ein media-Größe ist die gleiche wie die BoundingBox Breite und Höhe sind durch hinzufügen der
-dEPSCrop
param.Diese beiden Befehle erstellen Sie Ihre 'EPS ohne weißen Raum":
1. Schritt: konvertieren von EPS zu PDF:
2. Schritt: konvertieren von PDF zurück zu EPS:
Testen Sie die Genauigkeit des resultierenden EPS, Sie könnte verwenden ImageMagick ist
compare
zeigen die Unterschiede, pixel-Weise in rot, als PNG-Datei:sind die Ergebnisse in:
Werden Sie feststellen, dass es einige pixel-Unterschiede. Sie werden verursacht durch den Wert der 707.500000 aus der
%%HiResBoundingBox
führt zu einem Rundungsfehler später (PNG kann nicht "halbe Pixel").InformationsquelleAutor Kurt Pfeifle