Обнаружение повернутых страниц в Adobe Acrobat

Я работаю над плагином Javascript для Adobe Acrobat. Цель состоит в том, чтобы добавить поле с текстом, зависящим от версии, в каждое поле. Недостаток в том, что страницы имеют разный размер, некоторые в портретной, а другие в альбомной ориентации, и мне нужно поставить штамп в соответствующей ориентации и положении для каждой из них.

Я решил большую часть этого, но есть одна проблема. Когда человек создает страницы PDF (из программы САПР) в их окончательной ориентации, мой код (ниже) работает правильно. Однако, если они создают страницу в альбомной ориентации, а затем используют функцию «повернуть страницу» в Adobe Acrobat, чтобы сделать ее портретной, штамп отображается в правильном положении, но на 90 градусов от той ориентации, которую я хочу. (Ограничивающая рамка также смещена на 90 градусов, из-за чего текст становится очень маленьким.)

Как я могу определить, была ли страница повернута таким образом, чтобы я мог правильно установить ориентацию поля. В качестве альтернативы, могу ли я обозначить поле, используя отдельную точку координат, на которую не влияет вращение?

Мой код до сих пор:

function versionStamp()
{
    var oCurrentDate = new Date();
    var inch = 72;

    var newVersionLetter = app.response({
        cQuestion: "What is the new version letter?",
        cTitle: "Enter Version Letter",
        cDefault: " ",
        cLabel: "Rev",
    });

    if (newVersionLetter != null)
    {
        this.removeField("dateField");
        for (var p = 0; p < this.numPages; p++) {

            var aRect = this.getPageBox( {nPage: p} );
            var width = aRect[2] - aRect[0];
            var fieldCreated = false;

            if (width == (11*inch))
            {
                aRect[0] += 1.1*inch;
                aRect[2] = aRect[0] - 36;
                aRect[1] -= 16.6*inch;
                aRect[3] = aRect[1] + 1*inch;

                newDateField = this.addField("dateField" + "." + p, "text", p, aRect);
                newDateField.rotation = 270;
                fieldCreated = true;
            }

            if (width == (17*inch))
            {
                aRect[0] += 15.57*inch;
                aRect[2] = aRect[0]+1*inch;
                aRect[1] -= 9.875*inch;
                aRect[3] = aRect[1] - 36;

                newDateField = this.addField("dateField" + "." + p, "text", p, aRect);
                fieldCreated = true;
            }

            if (width == (24*inch))
            {
                aRect[0] += 1.8*inch;
                aRect[2] = aRect[0] - 36;
                aRect[1] -= 34.9*inch;
                aRect[3] = aRect[1] + 1.75*inch;

                newDateField = this.addField("dateField" + "." + p, "text", p, aRect);
                newDateField.rotation = 270;
                fieldCreated = true;
            }

            if (width == (36*inch))
            {
                aRect[0] += 33.17*inch;
                aRect[2] = aRect[0]+1.75*inch;
                aRect[1] -= 22.2*inch;
                aRect[3] = aRect[1] - 36;

                newDateField = this.addField("dateField" + "." + p, "text", p, aRect);
                fieldCreated = true;
            }

            if (fieldCreated)
            {
                newDateField.textColor = color.red
                newDateField.value = util.printd("mm/dd/yy", oCurrentDate) + " " + util.printd("HH:MM", oCurrentDate) + " " + newVersionLetter;
                newDateField.readonly = true;
            }   
        }
    }
}

person Ethan48    schedule 14.03.2015    source источник


Ответы (1)


Вы пытались получить значение поворота страницы со страницы, а затем настроить ориентацию штампа на основе возвращаемого значения?

Согласно документации Acrobat, стр. 127.

getPageRotation вернет вам 0, 90, 180 или 270 в зависимости от того, как была повернута страница. Затем вы можете использовать это значение для настройки местоположения вашего штампа.

var rotation = this.getPageRotation(3); //get rotation of page 3
if(rotation)
{
    //Depending on the value, adjust location of stamp
}
person Arnulfo Arroyo    schedule 17.03.2015
comment
Это именно то, что мне было нужно. Я чувствую себя немного глупо, что пропустил это в документации, но большое спасибо, что указали на это! - person Ethan48; 18.03.2015