[ID CC-CC2022] Перестал работать скрипт

  • Автор темы Автор темы DrEgor
  • Дата начала Дата начала

DrEgor

Участник
Топикстартер
Сообщения
818
Реакции
71
Добрый день. Подскажите пожалуйста, в чем может быть причина того, что ранее работающий скрипт ( например на версии CS5) отказывается работать на более поздних версиях (2022 например). Скрипт рисует пачкой штрихкода, делает папки для их группировки и т.д. Он продолжает это делать, но файлы "пустые", хотя все переменные назначаются. Подозреваю, что проблема где-то в этом куске -
//------------------------------------------------ Write -------------------------------------------------------------
function WriteToFile(myText) {

//var folderPath = "D:/temp/temp/"
var success = Folder(psFolder).create(); //

myFile = new File(psFolder + "/" + BarcodeBaze + " " + psFile + ".ps");
if ( myFile.exists ) {
exit;
}
else {
myFile.open("w");
}
myFile.write(myText);
myFile.close();
}
 
Он продолжает это делать, но файлы "пустые", хотя все переменные назначаются.
Если файлы "пустые", значит переменная myText имеет в себе "ничего", и именно это "ничего" и записывается в файл. Всё честно. Остается узнать, что заносится в переменную myText.
 
Если файлы "пустые", значит переменная myText имеет в себе "ничего", и именно это "ничего" и записывается в файл. Всё честно. Остается узнать, что заносится в переменную myText.
это я проверял - вроде все на месте

1709109803968.png
 
Проверить myFile.fsName. Туда ли оно все пишется.
 
Проверить myFile.fsName. Туда ли оно все пишется.
извините, я не понял
оно как раз НЕ пишется :) myFile.fsName я в коде не нашел
папка и сам файл создается, но он нулевого размера
при этом, если я ставлю вместо (myText) вот так - myFile.write(app.activeDocument.fullName);
то путь пишется.
хотя myText определен
1709132326081.png
 
Последнее редактирование:
psFolder где определена? какое значение в итоге получается в myFile? (есть тестовый folderPath - хорошей привычкой было бы не писать слеш в конце путей, а добавлять разделитель при необходимости - как и просходит в вашем коде) что возвращает myFile.write true false ? возможно проблема с областью видимости psFolder
 
и что на момент в BarcodeBaze ? также лучше явно указать кодировку myFile.encoding = 'UTF-8';
 
alert(typeof myText) что даст?
похоже дело в кодировке. Я преобразовал (вроде бы) основную часть .ps кода (во внешнем файле) и txt файл с основой для штрих-кода в UTF-16 LE BOM и файлы начали писаться, но почему-то результирующий .ps файл имеет кодировку ANSI
подскажите пожалуйста, как правильно задать "UTF-16 LE BOM" в скрипте?
пока в коде стоит file.encoding = "UTF-8"; работает, но наверное это не правильно
 

Не по теме:


А в чем вообще сермяга делать это скриптом индизайна???

это быстро и удобно
в txt файле пишется имя (название журнала например) и через tab основа для штрихкода, с этого генерируется необходимое кол-во штрихкодов в виде .ps файлов разложенных по своим папкам, которые в свою очередь драг-н-дропом закидыаются в тот-же индизайн. В то время, когда я его делал это был наиболее удобный и очевидный для меня способ. Увы, не было вас, чтобы подсказать более правильное решение. :)
 
драг-н-дропом закидыаются в тот-же индизайн
Получается что ID тут вообще с боку припеку?:) Ладно бы
основа для штрихкода
в ID файле была прописана в нужном месте и ШК формировался бы и втягивался сразу в нужное место :)
Но использовать JS ID для того чтобы просто обработать текстовый файл, когда это можно сделать VBS или просто батником, как то странным кажется :)
Какой тип ШК кстати?
 
Откуда вообще берется myText?
Может, вообще "binary" ставить надобно?
 
Получается что ID тут вообще с боку припеку?:) Ладно бы

в ID файле была прописана в нужном месте и ШК формировался бы и втягивался сразу в нужное место :)
Но использовать JS ID для того чтобы просто обработать текстовый файл, когда это можно сделать VBS или просто батником, как то странным кажется :)
Какой тип ШК кстати?
эм.... первую фразу не понял
Была задача - сделать для кучи журналов штрихкода. Задача была решена. Я не пойму в чем проблема?
Да, наверняка это можно было сделать VBS, возможно батником, наверняка прямо в pdf подставлять нужную основу тоже можно. Можно сделать это в 3D MAX (еще и объемными). Очень вероятно. что это можно реализовать средствами С++ или php в svg - еще и на веб страничках можно было бы это притулить...
я не пойму про что мы сейчас говорим?
Есть проблема - я ищу пути решения ЭТОЙ проблемы, а не изучаю альтернативные варианты построения штрихкодов.

Там два штрихкода предусмотрено - ISNN или EAN-13 (опять-же таковы ТЗ)
 
Откуда вообще берется myText?
Может, вообще "binary" ставить надобно?
myText это сборная солянка :)
____
WriteToFile(BarcodeMain + LastLineStart + BarcodeBaze + " " + psFile + LastLineEnd);

//------------------------------------------------ Write -------------------------------------------------------------
function WriteToFile(myText)
____
BarcodeMain - это основная часть .ps файла (там прописан принцип построения штрихкода)
LastLineStart - тут задан физический размер будущего штрихкода
BarcodeBaze - это подставляется сам штрихкод (цифры, по которым рисуются полоски)
psFile это правая часть штрихкода (дополнительное поле)
LastLineEnd - финальная часть .ps файла
В общем можно имея любой готовый .ps файл с штрихкодом менять в нужном месте цифры и сохраняя получать новый штрихкод. Но когда нужно сделать десятки или сотни подобных кодов - удобнее этот процесс автоматизировать.

Думаю проще было бы просто менять в исходнике нужные данные, но все умны задним числом, а в то время я почти так-же далек от скриптинга как и сейчас. Потому вот.
 
Ну, Вы решили проблему... но ее бы вероятно и не было, если бы Вы не использовали JS ID :) Я об этом :)
вы зело не внимательны :( проблема все еще не решена.
файл пишется, но не верно интерпретируется!

не было бы проблемы. если бы разработчики не начали мутить что-то с кодировками.
это старый скрипт, ему лет 7 наверное
 
myText это сборная солянка :)
____
WriteToFile(BarcodeMain + LastLineStart + BarcodeBaze + " " + psFile + LastLineEnd);

//------------------------------------------------ Write -------------------------------------------------------------
function WriteToFile(myText)
____
BarcodeMain - это основная часть .ps файла (там прописан принцип построения штрихкода)
LastLineStart - тут задан физический размер будущего штрихкода
BarcodeBaze - это подставляется сам штрихкод (цифры, по которым рисуются полоски)
psFile это правая часть штрихкода (дополнительное поле)
LastLineEnd - финальная часть .ps файла
В общем можно имея любой готовый .ps файл с штрихкодом менять в нужном месте цифры и сохраняя получать новый штрихкод. Но когда нужно сделать десятки или сотни подобных кодов - удобнее этот процесс автоматизировать.

Думаю проще было бы просто менять в исходнике нужные данные, но все умны задним числом, а в то время я почти так-же далек от скриптинга как и сейчас. Потому вот.
Я так же далек от понимания того, как формируется myText, как и до вашего ответа. :(
Уточняю вопрос: как формируются переменные BarcodeMain,LastLineStart,BarcodeBaze,psFile,LastLineEnd? Их скрипт заполняет или читает откуда?