Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从csv到InDesign的自定义文字样式_Javascript_Adobe Indesign_Basil.js - Fatal编程技术网

Javascript 从csv到InDesign的自定义文字样式

Javascript 从csv到InDesign的自定义文字样式,javascript,adobe-indesign,basil.js,Javascript,Adobe Indesign,Basil.js,我用javascript构建了一个文本编辑器,它将键盘上的文字作为输入,并输出相同的段落,但每个单词都根据其编写方式进行了相应的样式设置。“我的文本编辑器”导出一个CSV文件,其中每一行都是一个单词,其指定的样式值包括:字体大小、单词跟踪、两个单词之间的间距以及单词的颜色 现在我想使用库将这个csv文件导入InDesign,这样我就可以创建一个文本框,其中包含csv文件中的一段文字和样式 可以在此处看到csv文件: word,spacing,size,tracking,color "Hello

我用javascript构建了一个文本编辑器,它将键盘上的文字作为输入,并输出相同的段落,但每个单词都根据其编写方式进行了相应的样式设置。“我的文本编辑器”导出一个CSV文件,其中每一行都是一个单词,其指定的样式值包括:字体大小、单词跟踪、两个单词之间的间距以及单词的颜色

现在我想使用库将这个csv文件导入InDesign,这样我就可以创建一个文本框,其中包含csv文件中的一段文字和样式

可以在此处看到csv文件:

word,spacing,size,tracking,color
"Hello,",0,16,0,90
this,70,16,0.22,90
is,0,16,7,0
a,0,16,0,90
test,0,24,3.98,90
to,0,16,5.06,90
show,0,16,-1.56,90
what,42.84,16,-0.6,90
i,0,16,0,90
mean,0,16,-0.79,90
我已经成功地导入了csv,用每个单词创建了一个段落,并为每个工作设置了字体大小样式。但是我不能让追踪属性工作。此外,我也不知道如何通过basil.js(在texteditor中使用了左填充css)在段落中的两个单词之间创建增量空间。我也不知道如何改变每个单词的颜色

这在basil.js中可能吗

我当前的代码如下所示:

#includepath "~/Documents/;%USERPROFILE%Documents";
#include "basiljs/bundle/basil.js";


function draw(){

   b.clear(b.doc());

   //import csv file
   var data = b.CSV.decode( b.loadString("mycsv.csv"));

   //paragraph placeholder
   var paragraph = ""; 

   //parse to right data type,
   for (var i = 0; i < data.length; i++) {
     data[i].spacing = parseInt(data[i].spacing);
     data[i].size = parseInt(data[i].size);
     data[i].tracking = parseInt(data[i].tracking);
     data[i].color = parseInt(data[i].color);
     // data[i].word is already a string at it should

     //Add each word in the csv row to create a paragraph
     paragraph +=  data[i].word + " ";
  };

      //create a textframe element for the paragraph   
      var tf = b.text(paragraph, 36, 36, 500, b.height);
      var myWords = b.words(tf);

      // iterate through each word and  apply the specific styling for the
      specific word. 

      for(var i = 0; i < myWords.length; i++){  

             var size_ =  data[i].size; // font size
             var tracking_ = data[i].tracking; //word tracking
             var color_ = data[i].color;    // font color 
             var spacing_ = data[i].spacing;

            // this one works
            myWords[i].pointSize = size_; 

            //I'ld like to change tracking for each word - but this dosnt work
            myWords[i].tracking = tracking_; 

           //myWords[i].color = rgb(color_); - How can I apply a specific color to a specific word in the paragraph
           // myWords[i].word_spacing =  - I would like to increase the spacing between specific pairs of words. How can this be done?   

       }
}

b.go();
#includepath“~/Documents/;%USERPROFILE%Documents”;
#包括“basiljs/bundle/basil.js”;
函数绘图(){
b、 清除(b.doc());
//导入csv文件
var data=b.CSV.decode(b.loadString(“mycsv.CSV”);
//段落占位符
var段落=”;
//解析到正确的数据类型,
对于(变量i=0;i
跟踪 我认为你的跟踪确实有效,但是你从csv中获得的值太小,不值得注意。合法跟踪值的范围从
-1000
10000
,因此我会将您的值乘以100或1000以查看效果

颜色 要更改单词的颜色,需要更改其
fillColor
属性。要创建有效的InDesign颜色,可以使用basil函数
b.color(r、g、b)
。所以要把一个词涂成红色,你可以

myWords[i].fillColor = b.color(255, 0, 0);
字空间 要将空格更改为单词,实际上需要将两个单词之间的空格字符串作为目标,并更改其
kerningValue
属性。要做到这一点,您可以使用
b.characters(text)
将文本中的所有字符分开,就像您对单词所做的那样。然后,您需要遍历字符,看看它是否是空格,如果是,您可以更改其紧排值

var chars = b.characters(tf);

for (var i = 0; i < chars.length; i++) {
  if(chars[i].contents === " ") {
    chars[i].kerningValue = 400;
  }
}
var chars=b.字符(tf);
对于(变量i=0;i
Thx mdomino,解决了我所有的问题:D