Как программно манипулировать файлом EPS - PullRequest
6 голосов
/ 09 января 2009

Я ищу библиотеки, которые помогли бы в программной обработке файлов EPS (Encapsulated PostScript). По сути, я хочу сделать следующее:

  • Показать / скрыть существующие слои в файле EPS (включить или выключить их)
  • Заполнение (цвет) именованных фигур в файле EPS
  • Получить координаты названных точек в файле EPS
  • нарисуйте фигуры на новом слое в файле EPS
  • на сервере, без взаимодействия с пользователем (сценарии Adobe Illustrator не будут работать)

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

Можно ли даже назвать именованные фигуры и точки в файле EPS?

РЕДАКТИРОВАТЬ: Предполагая, что я сохранил слои в отдельных файлах EPS. Или еще лучше: просто часть данных «данных». Могу ли я затем объединить этот материал для создания нового файла EPS? И добавить команды рисования? Заполнить существующие именованные объекты?

Ответы [ 4 ]

7 голосов
/ 18 января 2009

Это чрезвычайно сложно, и вот почему: PS-файл - это программа, выполнение которой приводит к отображению пикселей на странице. Инструкции в программе PS находятся на уровне «нарисовать линию с использованием текущего пера и цвета» или «повернуть систему координат на 90 градусов», но нет понятия слоев или сложных объектов, как вы могли бы видеть их на векторном рисунке применение.

В структуре файлов PS очень мало соглашений, позволяющих внешним программам изменять их: страницы помечаются отдельно, ресурсы шрифтов и размеры мультимедиа указаны в специальных комментариях. Это особенно верно для Embedded Postscript (EPS), который должен следовать этим рекомендациям, поскольку они предназначены для чтения приложениями, а не для общего PS, так как он отправляется на принтер. Программа PS - это намного более низкий уровень абстракции, чем вам нужно, и теперь есть способ восстановить ее для произвольного кода PS. В принципе, файл PS может приводить к разным выводам каждый раз, когда он печатается, поскольку он может запрашивать свою среду выполнения и ветвление на основе случайных решений.

Такие приложения, как Adobe Illustrator, генерируют код PS, который имеет жесткую структуру. Существует вероятность, что они могут быть проанализированы и обработаны без интерпретации кода. Я бы даже предложил переосмыслить текущую архитектуру: у вас слишком низкий уровень абстракции для того, что вам нужно.

3 голосов
/ 09 января 2009

PDF не манипулирует, так как невозможно изменить какие-либо существующие части PDF (в общем), только добавить материал. EPS такой же, как PostScript, за исключением того, что он имеет заголовок границы.

Проблема с тем, что вы хотите, состоит в том, что PS - это язык программирования, вывод которого (в основном) - это некий образ. Таким образом, вопрос можно сформулировать так: «Как я могу рисовать фигуры на новом слое в файле Java». Вероятно, вам нужно создать полный PS на лету или использовать другой формат изображения.

1 голос
/ 09 января 2009

Я думаю, что вам лучше всего создать PDF из EPS, а затем манипулировать PDF. Затем вернемся к EPS. PDF гораздо более "управляемый", чем EPS.

1 голос
/ 09 января 2009

Я не знаю ни одной доступной библиотеки для этого, но вы можете создать что-то, чтобы удовлетворить ваши потребности на основе epstool из Ghostscript / GSview

...