Как повернуть Документ

изменение ориентации страницы

Как повернуть Документ

изменение ориентации страницы

По умолчанию при создании Документа страница ориентируется вертикально. Обычно хватает того, что она имеет размер “А4”. Но обязательно наступает такой момент, когда ориентацию следует изменить на горизонтальную.

В классе DocumentApp пять методов. В классе Document методов, конечно, побольше, но все они ориентированы либо на работу с самим файлом, либо на получение ссылок вложенных элементов текущего контейнера. В начале поисков есть уверенность, что именно этот класс будет отвечать за настройки файла. Но решение оказалось куда более не очевидным.

Если отвергунть, что HeaderSection, FooterSection и Body “слегка” неравнозначные классы, то стоит поискать какие-то отличительные признаки.

setPageHeight и setPageWidth позволяют изменить поле страницы, тем самым изменив ее ориентацию. Т.е. не существует никакого переключателя, который изменит все сам.

Параметры указываются в типографических пунктах, твипах. А может быть и не совсем в твипах, но они самые близкие к выдаваемым размерам. Самый простой способ получить требуемуемую величину - воспользоваться Google калькулятором. А4 имеет размеры 210 мм и 297мм. Методы gs возвращают 595.2755905511812 и 841.8897637795277 соответственно.

Повернуть горизонтально, размер A4

doc.getBody().setPageHeight(595.276).setPageWidth(841.89);

Повернуть вертикально, размер A4

doc.getBody().setPageHeight(841.89).setPageWidth(595.276);

Универсальный класс, который “поворачивает” листы

(function(g){
  
  var mngr = function(){
    this.doc = null;
    this.body = null;
  }
  
  mngr.prototype.setDocument = function(doc){
    if(!doc.getBody) throw 'It\'s not a Document';
    this.doc = doc;
    this.body = doc.getBody();
    return this;
  }
  
  mngr.prototype.setLandscape = function(bool){
    bool = bool !== false ? true: false;
    var w = this.body.getPageWidth();
    var h = this.body.getPageHeight();
    
    if(w < h == bool)
      this.body.setPageHeight(w).setPageWidth(h);
    
    return this;
  }
  
  mngr.prototype.setPortrait = function(bool){
    bool = bool !== false ? false : true;
    this.setLandscape(bool);
    return this;
  }
  
  g.DocManager = mngr;
  
})(this);

Повернуть горизонтально

var dm = new DocManager();
dm.setDocument(doc).setLandscape();

Повернуть вертикально

var dm = new DocManager();
dm.setDocument(doc).setPortrait();

Осталось реализовать метод setSize()

comments powered by Disqus