我正在使用Illustrator CS6脚本来提取具有给定专色的印刷拼版中按路径定义的切割轮廓,在本例中为“ wykrojnik”,并且我正在寻找有关如何解决问题的指导以最通用的方式。
该文件来自一个程序,该程序将原始强加的文件封装在多个剪切蒙版中,这并不是要删除的问题。我希望在这样的已经打开的文件上运行脚本:
选择所有剪贴蒙版,并将其删除
将颜色设置为切割轮廓的专色,选择所有具有该专色笔划的对象,进行复制,从文档中清除,使用与上一个相同的尺寸创建新文件,粘贴对象保存,关闭。
打开上一个文件,找到所有填充有专色的对象,将它们复制,从文档中清除,打开上一个,粘贴到位,保存,关闭。
另存为PDF的文件是打印生产文件,而AI文件是绘图仪的切割轮廓文件。描边元素是切割线,而填充元素是绘图仪的定位标记。 问题是,当我第二次打开pdf文件时,由于某种原因,脚本未选择以任何形式填充的专色。相反,第一个选择(笔触)可以,并将对象转移到新文档中。
下面是我正在使用的代码,对于未遵循先前称为变量的情况,我深表歉意,这可能会给理解代码带来困难。
var W = app.activeDocument.width;
var H = app.activeDocument.height;
var doc = app.activeDocument;
var pdf = new PDFSaveOptions();
var docPath = new File(app.activeDocument.path);
var docName = app.activeDocument.name;
//deletes the masks, sets the def. stroke colour the the spot colour I want to extract, does the job.
app.executeMenuCommand("Clipping Masks menu item");
app.executeMenuCommand("clear");
doc.defaultFillColor = doc.swatches.getByName("wykrojnik").color;
app.executeMenuCommand("Find Fill Color menu item");
app.executeMenuCommand("copy");
app.executeMenuCommand("clear");
//saves the pdf file and stores the name and location of the file
app.activeDocument.saveAs( File( docPath + "/" + docName ), pdf);
var docPathPDF = new File(app.activeDocument.path);
var docNamePDF = app.activeDocument.name;
app.activeDocument.close();
//creates the save options and new AI file
var ai = new IllustratorSaveOptions();
ai.compatibility = Compatibility.ILLUSTRATOR8;
ai.flattenOutput = OutputFlattening.PRESERVEAPPEARANCE;
app.documents.add(DocumentColorSpace.CMYK , W , H ,);
//pastes the clipboard contents in place, saves, closes
app.executeMenuCommand("pasteInPlace");
app.activeDocument.saveAs( File( docPath + "/" + docName ), ai);
var docPathAI = new File(app.activeDocument.path);
var docNameAI = app.activeDocument.name;
app.activeDocument.close();
//workaround to get app.(...) working, because it didn't
var theApp = app;
//open the previous pdf file for the second search, etc. (here is the problem with not finding the spot colour swatch
theApp.open(File(docPathPDF +"/" + docNamePDF) , DocumentColorSpace.CMYK);
doc.defaultStrokeColor = doc.swatches.getByName("wykrojnik").color;
app.executeMenuCommand("Find Stroke Color menu item");
app.executeMenuCommand("copy");
app.executeMenuCommand("clear");
app.activeDocument.saveAs( File( docPathPDF + "/" + docNamePDF ), pdf);
app.activeDocument.close();
//open the AI file again, paste the filled objects, save, close
theApp.open(File(docPathAI +"/" + docNameAI) , DocumentColorSpace.CMYK);
app.executeMenuCommand("pasteInPlace");
app.activeDocument.saveAs( File( docPathAI + "/" + docNameAI ), ai);
app.activeDocument.close();
我想知道应该怎么做,因为我知道穴居人的方法(例如“打开,粘贴,保存,关闭,再次打开(...)”)是无效的,应该是通过使用for循环初始化pathItems的搜索,将与专色交叉引用的项放入变量数组中,然后使用此数组填充app.selection值来完成,但是我很难构造适当的循环,这是逻辑。
如果有人指出为什么Illustrator不使用pdf文件第二个开口中的专色,我也将感到高兴。
总的来说,我可能不知道我在做什么,所以有人可以指出正确的方向来解决该问题,因为我对任务的可能解决方案感到不知所措。
谢谢。