2013-04-16 2 views
1

У меня есть скрипт, который делает следующее:Как установить (textFrame) pageItem в InDesign, чтобы обновить позицию/размер с главной страницы после ее ручного изменения на странице?

var document = app.documents.item(0); 
    var layer = document.layers.itemByName("Normal"); 
    var allTextFrames = toArray(layer.textFrames); 
    var moved = selectWhere("moved", "label", allTextFrames)[0]; 
    var notMoved = selectWhere("notMoved", "label", allTextFrames)[0]; 
    var instance = selectWhere("instance", "label", allTextFrames)[0]; 
    $.writeln("Moved   : " + moved.geometricBounds.join(", ")); 
    $.writeln("Moved overr: " + moved.overriddenMasterPageItem.geometricBounds.join(", ")); 
    $.writeln("notMoved   : " + notMoved.geometricBounds.join(", ")); 
    $.writeln("notMoved overr: " + notMoved.overriddenMasterPageItem.geometricBounds.join(", ")); 



    var overr = moved.overriddenMasterPageItem; 
    moved.geometricBounds = [moved.overriddenMasterPageItem.geometricBounds[0] 
              ,moved.overriddenMasterPageItem.geometricBounds[1] 
              ,moved.overriddenMasterPageItem.geometricBounds[2] 
              ,moved.overriddenMasterPageItem.geometricBounds[3]]; 
    moved.visibleBounds =  [moved.overriddenMasterPageItem.visibleBounds[0] 
              ,moved.overriddenMasterPageItem.visibleBounds[1] 
              ,moved.overriddenMasterPageItem.visibleBounds[2] 
              ,moved.overriddenMasterPageItem.visibleBounds[3]]; 

Но тогда, если изменить текстовый фрейм в главной странице не обновлять «переехал» textframe ...

Например есть является свойством для параметра pageItem, что при установке «-1» оно будет использовать значение главной страницы. Я искал что-то вроде этого, но для позиции и размера.

fillTint number readonly Процент оттенка для использования в цвете заливки PageItem. (Чтобы задать оттенок процентов, использовать число в диапазоне от 0 до 100; чтобы использовать унаследованное или переопределить значение, использовать -1.) SRC: http://jongware.mit.edu/iccs5_html_3.0.3d/iccs5/pc_PageItem.html

ответ

0

Я не маркируют как anwser, потому что иногда Безразлично» т работы;

Вот сценарий, который удалит текстовую рамку и восстановит ее. Затем он снабжает его данными старого текстового фрейма. Он также свяжет текстовую рамку с предыдущим и последующим текстовым фреймом.

Как использовать:

  • Создайте сценарий и вставьте следующий
  • Выберите перемещаемой textframe и запустить скрипт.
  • Done !!!

    #target "indesign" 
    #targetengine "mySessionX" 
    var SCRIPT_NAME = "Restore moved text frames"; 
    try{ 
    app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, SCRIPT_NAME); 
    }catch(e){ 
        alert(e); 
    } 
    
    function main(){ 
        removeOverrides(app.selection[0]); 
    } 
    
    function removeOverrides(textFrame){ 
        if(textFrame.constructor.name != "TextFrame"){ 
         throw new Error("No text frame selected"); 
        } 
        // save data 
        var contents = textFrame.contents; 
        var contentType = textFrame.contentType; 
        var nextTextFrame = textFrame.nextTextFrame; 
        var previousTextFrame = textFrame.previousTextFrame; 
        var masterPageTextFrame = textFrame.overriddenMasterPageItem; 
        var page = textFrame.parentPage; 
        if(nextTextFrame){ 
         nextTextFrame.previousTextFrame = null; 
        } 
        if(previousTextFrame){ 
         previousTextFrame.nextTextFrame = null; 
        } 
    
        // remove overrides 
        textFrame.removeOverride(); 
    
        // restore state 
        var newTextFrame = masterPageTextFrame.override(page); 
        newTextFrame.contents = contents; 
        newTextFrame.contentType = contentType; 
    
        // update right and left 
        if(nextTextFrame){ 
         nextTextFrame.previousTextFrame = newTextFrame 
        } 
        if(previousTextFrame){ 
         previousTextFrame.nextTextFrame = newTextFrame 
        } 
    
    
        newTextFrame.recompose(); 
        alert("Restored"); 
    } 
    
+0

Если вы решили вашу проблему, вы должны отметить свой ответ. – bgmCoder

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

  • Нет связанных вопросов^_^