gpt4 book ai didi

javascript - 在 TextFrames 中查找变量和嵌套的 pageItems

转载 作者:行者123 更新时间:2023-11-30 17:23:31 28 4
gpt4 key购买 nike

我需要导航和提取 TextFrame 的内容;这意味着:文本及其样式、变量和内部 pageItems。

我可以列出所有段落,对于每个段落我可以获得 TextStyleRanges(参见 this question),但是它们的 content 既不包含变量值也不包含页面项目。

我可以列出所有 textVariableInstances,但这不会告诉我它们在文本中的位置。

同样,我可以列出 pageItems,但不引用它们在文本方面的位置。

有时(只是有时)我得到的范围只包含一个字符,在那种情况下我可以获得变量和 pageItems;但由于情况并非总是如此,因此这不是解决方案。

我可以迭代一个段落的所有字符,从而获得我需要的一切,但这似乎太慢了。

我错过了什么?

我怎样才能按照预期的顺序获取段落的所有文本和非文本部分?

编辑

Dirk 的建议实际上有效,但显然只有当我从 TextFrame 访问 textVariableInstances 时才有效。我正在从 TextFrame 内的 Paragraph 内的 TextStyleRange 内的 Text 访问它,因为我正在尝试递归遍历和转换文档。在一个 Text 对象中,我有 textVariableInstances,但它们的 storyOffset 属性缺少属性 isValidtoSpecifierindex 和 who知道还有多少人。

所以,我想我现在的问题是:要知道 variableInstance 在 Text 对象中的位置,我可以可靠地使用类似的东西吗:

myVariableInstance.storyOffset.index - myText.insertionPoints[0].index

这样我就可以用变量的 resultText 值替换相应的字符?

最佳答案

textVariableInstance 的 storyOffset 属性产生一个插入点,其索引是包含故事中的实际数字偏移量。 storyOffset 属性适用于可放置在文本中的许多其他对象。

对于锚定页面项目,请改用父属性 - 它将产生一个字符。

var t = app.activeDocument.textFrames.item(0);
$.writeln(t.textVariableInstances.item(0).storyOffset.index);
$.writeln(t.rectangles.item(0).parent.index);

编辑

在你的编辑之后,你一定是在构建文本的过程中做错了什么。正如已经建议的那样,您可以在调试器中使用 isValid 和 toSpecifier() 来找出它在哪里中断。

以下代码适用于我,但对于通用方法,您需要考虑更多可以嵌入到文本中的内容,例如特殊字符,包括各种段落结尾、超链接、xml 元素、锚定页面项目。

#target indesign-8.0

function main() {
var doc = app.activeDocument;
for( var fi=0; fi<doc.textFrames.length; fi++ ) {
var f = app.activeDocument.textFrames.item(fi);
var s = f.parentStory;
for( var pi=0; pi<f.paragraphs.length; pi++ ) {
var p = f.paragraphs.item(pi);
var pl = p.characters.lastItem();
for( var ri=0; ri<p.textStyleRanges.length; ri++ ) {
var r = p.textStyleRanges.item(ri);
var rf = r.characters.firstItem();
var rl = r.characters.lastItem();
var t = r;
if( rl.index>pl.index ) // range goes beyond paragraph
t = s.texts.itemByRange(rf,pl);
$.writeln("text=",t.contents);
if( t.textVariableInstances.length>0 ) {
var tv = t.textVariableInstances.item(0);
$.writeln("variable=",tv.name," ",tv.storyOffset.index);
}
}
$.writeln("\\n");
}
}
}

main();

关于javascript - 在 TextFrames 中查找变量和嵌套的 pageItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24702032/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com