Нужно объединить 2 eps-файла для создания output.eps в Java - PullRequest
1 голос
/ 23 мая 2019

У меня есть 2 eps-файла

a.eps
b.eps

Мне нужно прочитать их содержимое и создать новый файл EPS, содержащий как a, так и b. Вывод производится путем добавления a.eps и b.eps с использованием этих

1. позиционирование (x, y)
2. масштабирование
3. вращение

Например. Если

содержимое a.eps равно X
содержимое b.eps равно O
содержимое output.eps будет X O

Я пытаюсь использовать библиотеку Graphics2D, но чтение файла EPS и извлечение фигуры становится все труднее.

1 Ответ

0 голосов
/ 23 мая 2019

Это тривиально, если вы придерживаетесь PostScript.EPS-файлы «инкапсулированы», то есть полностью автономны.Целью EPS является то, что вы можете вставить файл EPS в программу PostScript напрямую, ничего не зная об этом, кроме его размера и формы.

Все, что вам нужно сделать, - это изменить CTM между каждым файлом так, чтобы ониотображаются в правильном положении (и добавьте плиту котла для файла EPS вокруг объединенного файла).PostScript (EPS является подмножеством PostScript) имеет богатый набор операторов для этого.

Так, например, для объединения EPS1 и EPS2 и создания нового EPS из комбинации вы можете сделать:

%!PS-Adobe-2.0 EPSF-1.2
%%Creator:me, myself-
%%Title:combined EPS
%%CreationDate:23/5/19 9:32 AM
%%DocumentFonts:Helvetica-Bold
%%BoundingBox:0 0 612 792
%%EndComments

save
0 0 moveto
0.5 scale
...
... insert contents of EPS1 here
...
restore

save
306 0 moveto
0.5 scale
...
... insert contents of EPS1 here
...
restore

%%EOF

Это рисует EPS1 в левом нижнем углу носителя, уменьшенный на 50%, затем рисует EPS2 внизу, 306 точек (4,25 дюйма) слева, снова уменьшенный на 50%.

Вы должны получить правильные комментарии BoundingBox о окончательном EPS, это жизненно важно для любого приложения, которое импортирует EPS.

Если вам действительно нужен один файл EPS, или неЕсли вы не хотите делать все расчеты и самостоятельно, тогда вы можете использовать устройство Ghostscript eps2write, чтобы помочь.Вам все еще нужно написать код PostScript для позиционирования файлов EPS, но программа может быть проще.Взяв тот же пример, что и выше:

%!
save
0 0 moveto
0.5 scale
(/disk/path/EPS1.eps) run
restore
save
306 0 moveto
0.5 scale
(/disk/path/EPS2.eps) run
restore
showpage

Сохраните его как удобный файл, скажите input.ps, а затем выполните:

gs -sDEVICE=eps2write -sOutputFile=combined.eps input.ps

Результатом должен быть новый единственный файл EPS, содержащийсодержание двух оригинальных файлов EPS со всеми BoundingBox и другими шаблонами, заботящимися о вас.

...