#pdf #tags #adobe-illustrator
Вопрос:
У меня есть файл AI, и я пометил некоторые произведения искусства с помощью AITagSuite
(Теги фактически хранятся в виде строковых записей в словаре объектов искусства)
Я хочу преобразовать файл ai в pdf без потери тегов. когда я преобразую файл ai в pdf, я не могу получить доступ к тегам.
Есть идеи, как пометить/пометить объект в файле Ai и сохранить его в формате pdf?
Я также подумал об использовании некоторых других библиотек, которые могут получить файл AI в качестве входных данных и преобразовать его в pdf с тегами, есть идеи?
Заранее благодарю вас
Комментарии:
1. Я не знаю о других библиотеках, но, насколько я могу судить, в Illustrator до сих пор нет такой функции. Надеюсь, когда-нибудь это будет добавлено. Возможно, существует двухэтапный обходной путь с помощью сценариев Acrobat. Вы можете создать txt-файл из Illustrator с описанием объектов (на основе цветов, размеров, например, и т. Д.), А затем передать txt-файл в скрипт Acrobat, который будет искать объекты в PDF-файле и добавлять теги.
2. Спасибо тебе, Юрий. Не могли бы вы, пожалуйста, рассказать мне, как создать txt-файл из AI и как подать скрипт Acrobat? где я могу прочитать об этом? еще раз спасибо
3. Под «txt-файлом» я подразумеваю некоторый список. Вы можете перебрать все объекты в файле AI, перебрать все теги каждого объекта и составить список объектов ([позиция, цвет, тег], [позиция, цвет, тег], [позиция, цвет, тег] — например) и сохранить список на диске в txt-файле (или JSON). Эта часть довольно проста. Я могу показать вам, как это можно сделать, если вы опубликуете образец своего файла искусственного интеллекта. Но следующая часть-чтение списка Acrobat и поиск объектов с заданными свойствами в файле PDF-выходит за рамки моих нынешних знаний. Я не могу помочь тебе в этом вопросе.
4. Спасибо тебе, Юрий. Что касается второго шага, как вы думаете, можно ли идентифицировать объект по [положению, цвету, тегу] ? что делать, если у меня есть несколько уровней в задании искусственного интеллекта?
5. Я думаю, это зависит от того, как выглядит ваш ИИ. Но в большинстве случаев четыре цифры массива
geometricBounds()
(координаты[y1, x1, y2, x2], я уверен, что у Acrobat есть что-то похожее) цвет (одна [серая], три [RGB] или четыре [CMYK] цифры) позволяют очень легко идентифицировать объект. Не имеет значения, к какому слою относится объект. Единственная возможная ошибка может возникнуть, если у вас есть несколько объектов одинакового размера и цвета в одном и том же положении. Я не готов сейчас погружаться в мрачные воды сценариев Акробатов. Я могу попробовать написать иллюстраторскую часть задания, если вы хотите.
Ответ №1:
Вот пример того, как вы можете сохранить в Illustrator свойства помеченных элементов пути в файле, похожем на JSON, и прочитать их обратно из этого файла:
var items = app.activeDocument.pathItems; // add tags to a couple of pathItems var tag = items[0].tags.add(); tag.name = 'tag1'; tag.value = '123'; var tag = items[1].tags.add(); tag.name = 'tag2'; tag.value = '456'; // put all tagged pathItems into the array 'tagged_items' // and add to each of the items its properties: // 'tags': Array of object: [{name:value},{name:value},...] // 'color': Array of Numbers and Sting, for example: [10,0,25,15,'CMYKColor'] or [56.9845,'GrayColor'] // 'geometricBounds': Array of Numbers: [y1,x1,y2,x2] var tagged_items = []; var i = items.length; while (i--) { var item = items[i]; if (item.tags.length == 0) continue; // skip if the pathItem has no tags var tags = []; // make an array of tags for (var t=0; tlt;item.tags.length; t ) { var key = item.tags[t].name; var value = item.tags[t].value; var tag = {}; tag[key] = value; tags.push(tag); } var fillColor = []; // make an array of fillColor properties for (var c in item.fillColor) fillColor.push(item.fillColor[c]); // put the item into the array of tagged items tagged_items.push ( { 'tags': tags, 'fillColor': fillColor, 'geometricBounds': item.geometricBounds, } ); } // save the array in JSON-like file var file = File('d:/tagged_items.json'); file.open('w'); file.write(tagged_items.toSource()); file.close(); // read the array from the file and show the properties var file = File('d:/tagged_items.json'); var tagged_items = $.evalFile(file); for (var i in tagged_items) alert('pahtItem ' i ':n' props(tagged_items[i])); // ---------------------------------------------------------------------------- // returns a string with all properties of a given object function props(obj) { msg = ''; for (var p in obj) msg = p ': ' obj[p].toSource() 'n'; return msg; }
Если вам удастся прочитать файл, подобный JSON, с помощью Acrobat и сравнить его свойства со свойствами объектов в файле PDF, у вас есть шансы выполнить свою миссию.
Это всего лишь пример. Он плохо справляется с группами, точечными цветами и т. Д. И т. Д.