Извлечение координат x/y изображения, информации о ширине и высоте из PDF через IL или PS

У нас есть профессионально разработанный план этажа в формате PDF для мероприятия, которое мы проводим в настоящее время. Это похоже на чертеж САПР. У нас на ней нарисованы кабинки (прямоугольные квадраты).

У меня есть коллега, который находится в процессе создания приложения для телефона и, возможно, веб-приложения, оба из которых мы хотели бы содержать интерактивный план этажа, который в конечном итоге будет изображением с большой картой изображения, нарисованной поверх него в HTML. Для этого ему нужны координаты x/y каждой будки или x1/y1 и x2/y2.

Я веб-разработчик по профессии, поэтому, пожалуйста, потерпите меня! Есть ли способ извлечь эти данные программно с помощью Illustrator/Photoshop? Я знаю, что вы можете написать сценарии для запуска в обоих, но я понятия не имею, с чего начать.

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

Возможно, вы можете изучить такой инструмент, как g3data , но этот инструмент больше ориентирован на диаграммы и графики.

Ответы (4)

Вы всегда можете загрузить документ в Photoshop и использовать линейный инструмент для измерения элементов в пикселях, но если вам нужно работать с более чем одним документом в более чем одном случае, этот подход окажется очень утомительным и подверженным ошибкам.

Как вы говорите, у Photoshop есть API для включения сценариев, но вы не можете извлекать элементы из сценариев, поскольку элементы растрируются, и эта информация не сохраняется. Однако в иллюстраторе эта информация сохраняется, и вы, вероятно, сможете извлечь ее с помощью скрипта.

Использование сценариев с Illustrator для этого не лучший подход, IMO, если вы планируете делать это часто. Вы привязываете себя к платформе, которая привязана к машине, не может быть перемещена на сервер и так далее. Вам понадобится более независимое решение.

Поскольку PDF — это не что иное, как постскриптум (в основном), вы всегда можете извлечь содержимое, используя язык постскриптума. Тем не менее, это довольно специализированный язык, и относительно немногие его знают. Я не буду предлагать никому пойти и изучить это, если они еще этого не знают.

Лучшим подходом в вашем случае, вероятно, будет покупка лицензии на библиотеку-оболочку, которая анализирует все сложные вещи для вас и позволяет вам извлекать элементы простым способом, вызывая для него метод.

Поскольку PDF ориентирован на печать , поэтому все координаты относятся к DPI, поэтому вам нужно будет преобразовать это в своем программном обеспечении относительно любой используемой единицы (см, мм, дюймы и т. д.). Но для этого вы используете очень простую формулу.

Поскольку вы не указываете платформу разработки, я не могу дать конкретного предложения по такой библиотеке, но будьте уверены, что существует множество вариантов для наиболее распространенных платформ (.Net, Java, PHP и т. д.). Но внимательно ищите тот, который позволяет не только создавать PDF-файлы (почти все это делают), но также читать и анализировать PDF-документ (меньшее количество).

Сам процесс прост:

  1. Извлеките нужный элемент, вызвав небольшой набор функций/методов.
  2. Получить координаты и размер
  3. Вычислять в пикселях относительно DPI и используемой единицы измерения.
  4. Преобразование элемента в растровое (растрированное) представление.

Привет, ребята, и спасибо за ваши подробные ответы. Никто из нас не является экспертом в области PS/IL, поэтому некоторые из них кажутся немного сложными для того, что мы хотели.

Мой коллега на самом деле нашел кое-что, что в значительной степени сделало то, что он хотел, а именно сохранить файл PS как .svg, что, по-видимому, дало набор данных координат, с которыми он мог работать.

Спасибо.

У меня есть скрипт для такой задачи — http://pastebin.com/YHaZp7ZN

Он берет выбранные объекты и добавляет текстовый объект с координатами выше. Вы можете настроить его под свои нужды.

Не стесняйтесь обращаться ко мне по этому поводу.

Дружелюбный хедз-ап! Кто-то задал вопрос об этом скрипте, но у него нет представителя, который мог бы прокомментировать или пообщаться в чате, чтобы попытаться отследить вас. Вопрос может быть закрыт как есть, но если он останется, я подумал, что вы захотите об этом узнать!

Есть еще один способ, которым я часто пользуюсь. Вы должны установить каждый срез с помощью инструмента среза. CS6 Затем 1. сохранить для Интернета -> 2. меню оптимизации (вверху справа) -> 3. настройки: по умолчанию -> 4. Фрагменты (из выпадающего списка) -> 5. Генерировать CSS по ID -> 6. ОК + предварительный просмотр из окна «Сохранить для Интернета» PS генерирует код CSS, содержащий все меры элементов и координаты x/y, готовые для копирования и вставки в CSS.