[英]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.