簡體   English   中英

在頁面中手動更改后,如何在InDesign中設置(textFrame)pageItem以從母版頁更新位置/大小?

[英]How to set a (textFrame) pageItem in InDesign to update the position/size from the master page after it was manually changed in a page?

我有一個執行以下操作的腳本:

    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]];

但是,如果我更改母版頁中的文本框架,則不會更新“已移動”文本框架...

例如,pageItem有一個屬性,當該屬性設置為“ -1”時,它將使用母版頁值。 我一直在尋找類似的東西,但位置和大小。

fillTint Number只讀在PageItem的填充顏色中使用的着色百分比。 (要指定色調百分比,請使用0到100范圍內的數字;要使用繼承或覆蓋的值,請使用-1。)src: http//jongware.mit.edu/iccs5_html_3.0.3d/iccs5/ pc_PageItem.html

我不會標記為答案,因為有時無法正常工作。

這是將刪除文本框並還原的腳本。 然后為它提供舊文本框架的數據。 它還會將文本框鏈接到上一個和下一個文本框。

如何使用:

  • 創建腳本並粘貼以下內容
  • 選擇移動的文本框並運行腳本。
  • 做完了!!!

     #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"); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM