2015-03-14 2 views
1

Я работаю над плагином Javascript для adobe acrobat. Цель состоит в том, чтобы добавить поле с конкретным текстом для каждого поля. Морщина состоит в том, что страницы имеют разные размеры, а некоторые - в портретном и других пейзажах, и мне нужно поставить марку в соответствующую ориентацию и положение для каждого.Обнаружение вращающихся страниц в 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; 
      } 
     } 
    } 
} 

ответ

2

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

Per Acrobat Documentation Page 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 
} 
+0

Это именно то, что мне нужно. Я чувствую себя немного немым, что я пропустил его в документации, но большое спасибо за указание на это! – Ethan48

Смежные вопросы