对于你的第一个问题
文本框架自动将它们的高度适应内容,smth。喜欢适合(FitOptions.FRAME_TO_CONTENT);
你可以使用myText.fit(FitOptions.FRAME_TO_CONTENT);
. 如果那里没有实现某些东西,你不必坚持使用 Basil。
文本框一直持续到页面边界,然后添加新页面。
这有点棘手。如果您扩展文本框,它们的大小将会改变。您将需要循环之外的另一个变量来跟踪geometricBounds
最后一帧的 并在它们的开头添加下一帧。当您的最后一个界限超过 pageHeight 时,您将需要添加一个新页面。
这是让你开始的东西。这是未经测试的代码。
/**
* InDesign Objects have a property called
* geometricBounds
* these are the bounds in page coordinates sorted like this
* [y1, x1, y2, x2]
* or in words
* [
* y of upper left corner,
* x of upper left corner,
* y of lower right corner,
* x of lower right corner
* ]
*/
var prevGeometricBounds = [100, 10, 100, 10];
for (var i = 0; i < jsonData.length; i++) {
var myText = jsonData[i].text;
var x = prevGeometricBounds[1];
var y = prevGeometricBounds[0];
var w = prevGeometricBounds[3] - prevGeometricBounds[1];
var h = prevGeometricBounds[2] - prevGeometricBounds[1];
var textFrame = text(myText, x, y, w, h);
textFrame.fit(FitOptions.FRAME_TO_CONTENT);
prevGeometricBounds = myText.geometricBounds;
if(prevGeometricBounds[2] > height){
addPage();
}
}
另一个提示。正如你所看到的,我省略了b.
Basil 的演变,但我们还没有发布第 2 版。你可以从GitHub 上的开发分支获取最新版本。相关文档位于此处。
编辑 1
在 Basil 2 中,您应该能够使用JSON.parseloadString
加载 JSON ,然后对其进行解码
Basil 文本函数返回一个textFrame
. 所以该fit
功能应该可以工作。如果您遇到错误,我们很乐意在github上接受错误报告。
编辑 2
是在您从 JSON 加载的fit
字符串上调用的,而不是在text()
函数的结果上调用的。