Скрипт Indesign jsx, запрашивающий указатель

Я новичок в написании сценариев indesign. Я хотел бы получить несколько советов по написанию jsx-скриптов. У меня есть шаблон indesign (файл indt), и мне нужно создать из него файл indd (просто копию). Затем мне нужно заменить имя/фамилию, дату и т. д. содержимым, которое я прочитал из xml.

Мне пока это нравилось:

function buildIndesignDocument(templatePath, templateFileName, targetPath, xmlFile, orderNumber, jobNumber) {
    DEBUGG("buildIndesignDocument execution start");

    //check wheher target path is writable.  If not exit from further processing
    var canSaveToServerFlag = checkServerWritable(targetPath.toString());
    if(!canSaveToServerFlag) {
        DEBUGG("Exiting from the process");
        return;
    }else{
        var originalTemplateFilePath = templatePath+templateFileName;
        DEBUGG("Original Template Path is " + originalTemplateFilePath);
        var originalTemplate = new File(originalTemplateFilePath);
        var filePrefix =jobNumber.toString()+"_"+orderNumber.toString()+ "_";

        if (originalTemplate.exists) {
            //create a copy of the template in target folder and name it as indd
            targetFileName= filePrefix+templateFileName.replace(".indt", ".indd");
            DEBUGG("target FileName is " + targetFileName);
            var targetFile =targetPath.toString() + targetFileName ;
            DEBUGG("target FilePath and name is " + targetFile);
            var targetFileCreated=originalTemplate.copy(File(targetFile));
            //  if(targetFileCreated.exists){
                // TODO####hardcoded true need to change
                if(true) {
                    DEBUGG("targetFile Created Successfully" + targetFileCreated);

                    var xmlFormFile =getGenericXmlFile(xmlFile);
                    DEBUGG("xmlFormFile is -----------" +xmlFormFile);
                    var firstName = xmlFormFile.xpath("/formData/firstName");
                    var lastName = xmlFormFile.xpath("/formData/lastName");
                    DEBUGG("firstName----------"+firstName  + "  and last name is ----------" +lastName );

                    //Open the indd file and replace the content with form data preserving format and style
                    var inddFile = new File(targetFile);
                    try {
                        DEBUGG("inside try");

                        //open file for write -mode w is write
                        inddFile.open ("w", null, null);
                        var myDoc=inddFile.read ();
                        DEBUGG("after opening"+myDoc.toString());

                        inddFile.close;
                    } catch(e) {
                        DEBUGG("Exception in opening " + e.description);
                        inddFile.close;
                    }
                } else {
                    DEBUGG("targetFile did not create successfully");
                }
            } else {
                DEBUGG("Template not Found");   
                logError("Missing template file with name =="  +originalTemplateFilePath);
            }
            DEBUGG("buildIndesignDocument execution end");
        }
    }
}

Я не могу правильно открыть файл и заменить содержимое. Может кто-нибудь пролить свет на это.


person DesignJoe    schedule 14.08.2018    source источник
comment
Пробовали ли вы открыть продублированный/переименованный файл вручную? Если да, то это сработало? Что делать, если вы используете var myDocument = app.open(File(targetFile))?   -  person cybernetic.nomad    schedule 15.08.2018
comment
Я сделал, но он говорит, что app.open не распознан. Я использую ExtendedToolKit для запуска скрипта. Должен ли я сделать что-то еще   -  person DesignJoe    schedule 15.08.2018
comment
в ExtendedToolKit убедитесь, что вы выбрали Indesign в верхнем левом меню или добавьте #target InDesign в качестве первой строки вашего скрипта.   -  person Nicolai Kant    schedule 17.08.2018


Ответы (1)


Чтобы открыть шаблон и сохранить его, попробуйте следующее:

function buildIndesignDocument(templatePath, templateFileName, targetPath, xmlFile, orderNumber, jobNumber) {
        var myDocument = app.open(File(templatePath+"/"+templateFileName));

// do what you want with the document here

        var targetFileName= targetPath+"/"+templateFileName.replace(".indt", ".indd");
        myDocument.save(new File(targetFileName));
 }
person cybernetic.nomad    schedule 16.08.2018