2016-11-20 16 views
0

Моя задача состоит в объединении нескольких небольших файлов EPS в один большой EPS с условием, что эти небольшие EPS-файлы не должны перекрывать друг друга.Ghostscript для объединения нескольких файлов eps в один большой файл eps

Я надеялся, что это можно сделать программным способом, а не вручную корректировать их с помощью инструментов графического интерфейса.

Я пробовал команды ghostscript, но я оказался с этими маленькими eps поверх друг друга.

Я также смотрю psutils (psnup/pstops), но я не уверен, может ли это помочь мне.

Я не против использования более тяжелой программы/lib, как Ghost4j (хотя мне, возможно, придется добавить туда больше функций, если это не поможет мне). Я просто хочу убедиться, что это невозможно сделать легко или с существующими инструментами.

Спасибо!

ответ

2

Вы знаете, как файлы EPS являются Предполагаемый для использования? Точка EPS-файла заключается в том, что он предназначен для использования в качестве «черного ящика» приложением.

Когда приложение создает программу PostScript, оно может включать EPS, не зная ничего о нем, кроме его размера, в конечном результате. Поэтому, когда PostScript генерируется, приложение знает размер EPS и изменяет CTM, чтобы масштабировать контент по мере необходимости и находить его на странице.

Если вы хотите использовать несколько файлов EPS, то вы должны сделать то же самое, вы должны изменить CTM между каждым файлом EPS так, чтобы он располагался по размеру и положению на требуемой странице. Если вы этого не сделаете, все они попадают в текущую позицию и масштаб на странице. Как вы говорите, они заканчиваются друг на друга.

Теперь вся точка из EPS-файла является то, что он может быть помещен программно, но вы должны написать программу, чтобы сделать это :-)

Сначала вам нужно разобрать ограничительную рамку из пенополистирола файл. Если EPS правильно соответствует, это будет %% BoundingBox и, возможно, комментарии %% HiResBondingBox.

Вооружившись этой информацией, вам необходимо решить, какой размер носителя вы используете и/или как масштабировать EPS-файлы, чтобы они соответствовали требуемому носителю.

Затем вы начинаете новую программу PostScirpt, которая начинается с запроса определенного размера носителя, затем использует операторы scale и translate для перемещения в нужную позицию на носителе и затем выполняет первый EPS-файл (либо путем включения или с помощью оператора run).

Повторите процесс для каждого файла EPS.

Наконец написать новый контент с помощью showpage оператора

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

Так, например (все значения являются только мнимым примером данных):

%! 
<< /PageSize [612 792] >> setpagedevice 

gsave 
306 396 moveto 
0.5 0.5 scale 
(example1.eps) run 
grestore 

gsave 
306 0 moveto 
1.5 1.5 scale 
(example2.eps) run 
grestore 

gsave 
0 396 moveto 
(example3.eps) run 
grestore 

gsave 
0 0 moveto 
0.66 0.66 scale 
(example4.eps) run 
grestore 

showpage 
+0

Спасибо. Я могу заставить его работать, используя перевод с ключом -c для каждого eps. –

 Смежные вопросы

  • Нет связанных вопросов^_^