簡體   English   中英

從 JSON / CSV 加載內容並使用 basil.js 使文本框適合內容

[英]Loading content from a JSON / CSV and make the textbox fit to the content with basil.js

我通過 basil.js 成功地將 JSON 文件加載到 InDesign 中。

var jsonString = b.loadString("data.json");
var jsonData;

function setup() {

  jsonData = b.JSON.decode(jsonString);

  for (var i = 0; i < jsonData.length; i++) {
    var myText = jsonData[i].text;
    b.text(myText, 100, 10 * i, 100, 20);
  };
}

b.go();

結果看起來如預期:

結果看起來如預期: 我想要實現的是

  1. 文本框架自動將它們的高度與內容相匹配,smth。 喜歡fit(FitOptions.FRAME_TO_CONTENT);
  2. 文本框一直持續到頁面邊界,然后添加新頁面。

任何提示都受到熱烈贊賞。 干杯!

對於你的第一個問題

文本框架自動將它們的高度與內容相匹配,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 中,您應該能夠使用loadString加載 JSON,然后使用JSON.parse對其進行解碼

Basil 文本 function 返回一個textFrame 所以fit的 function 應該可以工作。 如果您遇到錯誤,我們很樂意在github接受錯誤報告。


編輯 2

fit是在您從 JSON 加載的字符串上調用的,而不是在text() function 的結果上調用的。

暫無
暫無

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

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