Acrobat Javascript, который заполняет форму и сохраняет ее в одной из многих папок - PullRequest
0 голосов
/ 09 ноября 2018

РЕДАКТИРОВАТЬ: Я решил свою проблему с помощью другого форума. Это были мои переменные, и я никогда не позволял циклу while определять их, я объявлял их только сверху, поэтому цикл просто рассматривал его как постоянное значение, которое было первой импортируемой записью.

Итак, я пытаюсь заполнить форму Acrobat PDF, которую я создал, с информацией в текстовом файле, а затем сохранить ее в одной из нескольких папок в соответствии с информацией в форме. У меня есть набор папок с именами по диапазонам номеров (например, 1-49, 50-99, 100-149 и т. Д.), И некоторым папкам предшествует буква "z", потому что наша система нумерации для того, что мы отслеживание с помощью этих форм включает в себя некоторые имена, отформатированные с Z в конце (люди здесь, передо мной, вроде бы отстой).

Логика кода, который я пытаюсь исправить, такова (если вы просто хотите увидеть код ниже):

импортировать текстовые данные в цикле while -> использовать indexOf для поиска значения целевого поля для буквы Z -> использовать переключатель для установки 2 блоков кода, 1 для значений, содержащих «z», и 1 для значений без «z» "-> определить, какой блок кода следует запустить, на основе" z "-> используйте substr (0,3), чтобы извлечь первые три символа из значения, и использовать его в блоках кода для сравнения с нашими диапазонами номеров, чтобы увидеть, какой диапазон число попадает в число -> установить переменную со строкой, в соответствии с которой она попадает в диапазон (т. е. «100-149 /») -> перейти к сохранению PDF -> использовать ранее установленную переменную, чтобы изменить выходной каталог saveAs, чтобы который когда-либо изменял диапазон, он переключал нашу переменную и сохранял PDF в соответствующей папке, названной как диапазон номеров -> увеличивал переменную и повторял цикл

Моя проблема сейчас в том, что переменная, которую мы устанавливаем с помощью кода переключателя, выглядит как ноль. Поэтому вместо того, чтобы добавить мою строку и заставить ее создавать PDF-файлы в правильных подпапках, он просто добавляет 0 в начало имени файла и сохраняет его в папке верхнего уровня. Я думал, что у меня правильная логика в разделе переключателей, но, возможно, я просто недостаточно знаком с JS, чтобы увидеть мою проблему.

Код: ImportES = app.trustedFunction (function () {

var fileName = "/c/Users/jcoleman/Desktop/Endless Slings/Endless Sling Data.txt";
var outputDir = "/c/Users/jcoleman/Desktop/Endless Slings/";
var whichCert = this.getField("PFFSID").value;
var firstThree = whichCert.substr(0,3);
var whichFolder = "0";
var whichCase = whichCert.indexOf("Z");

var err = 0;
var idx = 0;
while (err == 0) {
err = this.importTextData(fileName, idx);

switch (whichCase) {

case 3: {
    if (0 < firstThree && firstThree <49)
        whichFolder = "z1-49/";
    else if (49 < firstThree && firstThree <99)
        whichFolder = "z50-99/";
    else if (99 < firstThree && firstThree <149) 
        whichFolder = "z100-149/";
    else if (149 < firstThree && firstThree <199) 
        whichFolder = "z150-199/";
    else if (199 < firstThree && firstThree <249) 
        whichFolder = "z200-249/";
    else if (249 < firstThree && firstThree <299) 
        whichFolder = "z250-299/";
    else if (299 < firstThree && firstThree <349) 
        whichFolder = "z300-349/";
    else if (349 < firstThree && firstThree <399) 
        whichFolder = "z350-399/";
    else if (399 < firstThree && firstThree <449) 
        whichFolder = "z400-449/";
    else if (449 < firstThree && firstThree <499) 
        whichFolder = "z450-499/";
    else if (499 < firstThree && firstThree <549) 
        whichFolder = "z500-549/";
    else if (549 < firstThree && firstThree <599) 
        whichFolder = "z550-599/";
    else if (599 < firstThree && firstThree <649) 
        whichFolder = "z600-649/";
    else if (649 < firstThree && firstThree <699) 
        whichFolder = "z650-699/";
    else if (699 < firstThree && firstThree <749) 
        whichFolder = "z700-749/";
    else if (749 < firstThree && firstThree <799) 
        whichFolder = "z750-799/";
    else if (799 < firstThree && firstThree <849) 
        whichFolder = "z800-849/";
    else if (849 < firstThree && firstThree <899) 
        whichFolder = "z850-899/";
    else if (899 < firstThree && firstThree <949) 
        whichFolder = "z900-949/";
    else if (949 < firstThree && firstThree <999) 
        whichFolder = "z950-999/";
    break;
}



case -1: {
    if (0 < firstThree && firstThree <49)
        whichFolder = "1-49/";
    else if (49 < firstThree && firstThree <99)
        whichFolder = "50-99/";
    else if (99 < firstThree && firstThree <149) 
        whichFolder = "100-149/";
    else if (149 < firstThree && firstThree <199) 
        whichFolder = "150-199/";
    else if (199 < firstThree && firstThree <249) 
        whichFolder = "200-249/";
    else if (249 < firstThree && firstThree <299) 
        whichFolder = "250-299/";
    else if (299 < firstThree && firstThree <349) 
        whichFolder = "300-349/";
    else if (349 < firstThree && firstThree <399) 
        whichFolder = "350-399/";
    else if (399 < firstThree && firstThree <449) 
        whichFolder = "400-449/";
    else if (449 < firstThree && firstThree <499) 
        whichFolder = "450-499/";
    else if (499 < firstThree && firstThree <549) 
        whichFolder = "500-549/";
    else if (549 < firstThree && firstThree <599) 
        whichFolder = "550-599/";
    else if (599 < firstThree && firstThree <649) 
        whichFolder = "600-649/";
    else if (649 < firstThree && firstThree <699) 
        whichFolder = "650-699/";
    else if (699 < firstThree && firstThree <749) 
        whichFolder = "700-749/";
    else if (749 < firstThree && firstThree <799) 
        whichFolder = "750-799/";
    else if (799 < firstThree && firstThree <849) 
        whichFolder = "800-849/";
    else if (849 < firstThree && firstThree <899) 
        whichFolder = "850-899/";
    else if (899 < firstThree && firstThree <949) 
        whichFolder = "900-949/";
    else if (949 < firstThree && firstThree <999) 
        whichFolder = "950-999/";
}
}



if (err == -1)
    app.alert("Error: Cannot Open File");
else if (err == -2)
    app.alert("Error: Cannot Load Data");
else if (err == 1)
    app.alert("Warning: User Cancelled File Select");
else if (err == 2)
    app.alert("Warning: User Cancelled Row Select");
else if (err == 3)
    app.alert("Warning: Missing Data");
else if (err == 0) {
    this.saveAs(outputDir + whichFolder + "ES-" + this.getField("PFFSID").value + ".pdf"); 
    idx++;
}
}
});

// menu item
app.addMenuItem({
cName: "ImportES",
cUser: "Import Endless Slings",
cParent: "Edit",
cExec: "ImportES()",
cEnable: "event.rc = (event.target != null);",
nPos: 1
});

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Я решил свою проблему с помощью другого форума. Это были мои переменные, и я никогда не позволял циклу while определять их, я объявлял их только сверху, поэтому цикл просто рассматривал его как постоянное значение, которое было первой импортируемой записью.

Соблюдайте сбалансированную диету и не пренебрегайте фруктами и переменными, все.

0 голосов
/ 09 ноября 2018

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

var ImportES = app.trustedFunction(function(doc) {
    var fileName = "/c/Users/jcoleman/Desktop/Endless Slings/Endless Sling Data.txt";
    var outputDir = "/c/Users/jcoleman/Desktop/Endless Slings/";
    var whichCert = doc.getField("PFFSID").value;
    var firstThree = whichCert.substr(0,3);
    var whichFolder = "0";
    var whichCase = whichCert.indexOf("Z");

    var err = 0;
    var idx = 0;
    while (err == 0) {
    err = doc.importTextData(fileName, idx);

    switch (whichCase) {

    case 3: {
        if (0 < firstThree && firstThree <49)
            whichFolder = "z1-49/";
        else if (49 < firstThree && firstThree <99)
            whichFolder = "z50-99/";
        else if (99 < firstThree && firstThree <149) 
            whichFolder = "z100-149/";
        else if (149 < firstThree && firstThree <199) 
            whichFolder = "z150-199/";
        else if (199 < firstThree && firstThree <249) 
            whichFolder = "z200-249/";
        else if (249 < firstThree && firstThree <299) 
            whichFolder = "z250-299/";
        else if (299 < firstThree && firstThree <349) 
            whichFolder = "z300-349/";
        else if (349 < firstThree && firstThree <399) 
            whichFolder = "z350-399/";
        else if (399 < firstThree && firstThree <449) 
            whichFolder = "z400-449/";
        else if (449 < firstThree && firstThree <499) 
            whichFolder = "z450-499/";
        else if (499 < firstThree && firstThree <549) 
            whichFolder = "z500-549/";
        else if (549 < firstThree && firstThree <599) 
            whichFolder = "z550-599/";
        else if (599 < firstThree && firstThree <649) 
            whichFolder = "z600-649/";
        else if (649 < firstThree && firstThree <699) 
            whichFolder = "z650-699/";
        else if (699 < firstThree && firstThree <749) 
            whichFolder = "z700-749/";
        else if (749 < firstThree && firstThree <799) 
            whichFolder = "z750-799/";
        else if (799 < firstThree && firstThree <849) 
            whichFolder = "z800-849/";
        else if (849 < firstThree && firstThree <899) 
            whichFolder = "z850-899/";
        else if (899 < firstThree && firstThree <949) 
            whichFolder = "z900-949/";
        else if (949 < firstThree && firstThree <999) 
            whichFolder = "z950-999/";
        break;
    }



    case -1: {
        if (0 < firstThree && firstThree <49)
            whichFolder = "1-49/";
        else if (49 < firstThree && firstThree <99)
            whichFolder = "50-99/";
        else if (99 < firstThree && firstThree <149) 
            whichFolder = "100-149/";
        else if (149 < firstThree && firstThree <199) 
            whichFolder = "150-199/";
        else if (199 < firstThree && firstThree <249) 
            whichFolder = "200-249/";
        else if (249 < firstThree && firstThree <299) 
            whichFolder = "250-299/";
        else if (299 < firstThree && firstThree <349) 
            whichFolder = "300-349/";
        else if (349 < firstThree && firstThree <399) 
            whichFolder = "350-399/";
        else if (399 < firstThree && firstThree <449) 
            whichFolder = "400-449/";
        else if (449 < firstThree && firstThree <499) 
            whichFolder = "450-499/";
        else if (499 < firstThree && firstThree <549) 
            whichFolder = "500-549/";
        else if (549 < firstThree && firstThree <599) 
            whichFolder = "550-599/";
        else if (599 < firstThree && firstThree <649) 
            whichFolder = "600-649/";
        else if (649 < firstThree && firstThree <699) 
            whichFolder = "650-699/";
        else if (699 < firstThree && firstThree <749) 
            whichFolder = "700-749/";
        else if (749 < firstThree && firstThree <799) 
            whichFolder = "750-799/";
        else if (799 < firstThree && firstThree <849) 
            whichFolder = "800-849/";
        else if (849 < firstThree && firstThree <899) 
            whichFolder = "850-899/";
        else if (899 < firstThree && firstThree <949) 
            whichFolder = "900-949/";
        else if (949 < firstThree && firstThree <999) 
            whichFolder = "950-999/";
    }
}



if (err == -1)
    app.alert("Error: Cannot Open File");
else if (err == -2)
    app.alert("Error: Cannot Load Data");
else if (err == 1)
    app.alert("Warning: User Cancelled File Select");
else if (err == 2)
    app.alert("Warning: User Cancelled Row Select");
else if (err == 3)
    app.alert("Warning: Missing Data");
else if (err == 0) {
    this.saveAs(outputDir + whichFolder + "ES-" + this.getField("PFFSID").value + ".pdf"); 
    idx++;
}
}
});

// menu item
app.addMenuItem({
cName: "ImportES",
cUser: "Import Endless Slings",
cParent: "Edit",
cExec: "ImportES(this)",
cEnable: "event.rc = (event.target != null);",
nPos: 1
});
...