Indesign中的Basil.js和ExtendScript /如何设置textFrames的样式? [英] Basil.js and ExtendScript in Indesign / How can I style textFrames?

查看:115
本文介绍了Indesign中的Basil.js和ExtendScript /如何设置textFrames的样式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在svg元素在Indesign中放置/绘制后,我想将样式更改为部分或全部元素。在我的示例中,我在绘制textFrame时设置了样式。我的例子有效。

After the svg elements are placed/drawn in Indesign, I wanna change the style from some or all elements. In my example I style the textFrames while they are drawn. My example works.

但是如何在放置文本框架后更改样式?

But how can I change the style after the textFrames are placed?

我想使用倾斜角(应用于TextFrame)和rotationAngle(在我的示例中-> forLoop)

我尝试了以下操作: r.textFrames.shearAngle = 20; doc.textFrames.add({shearAngle:20}); 。 ..但两者都不起作用。

I tried the following: r.textFrames.shearAngle=20; and doc.textFrames.add({shearAngle:20}); ...but both don‘t work.

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

    // this script shows how to load data into 
    // basil for further usage. 
    // The document you are working with needs to be saved at least once. 
    // The data needs to be in a folder next to that document 
    // The folder needs to be named "data" 
    // take a look into the output of the JS console of the ESTK
    function draw() {
      var doc = b.doc();
      b.clear(doc); // clear the doc
      b.units(b.MM); // use MM
      var yTextFrame = 195;
      // get the scripts name// get its containing folder// get the name of the script without the extension // add the .indd to the extension
      var fname = File($.fileName).parent.fsName + '/' + ($.fileName.split('/')[$.fileName.split('/').length - 1]).split('.')[0] + '.indd';
      // and save it
      doc.save(fname, false, 'basil', true); //save the file next to the script

      // code goes here -----------
      var filecontent = b.loadString("data.json"); // load the text file
      b.println(filecontent.constructor.name); // take a look at what kind of content we have
      var json = b.JSON.decode(filecontent); // transform it to JSON
      b.println(json.constructor.name); // take a look again what json is
      b.println(json.description); // print something from the file
      // loop all the entries
      for (var i = 0; i < 5; i++) {
        b.println(json.laundry_care_instructions[i].instruction); // take a look at the entry
        b.println(json.laundry_care_instructions[i].instruction.length); // how many characters does the entry have
        var r =b.text(json.laundry_care_instructions[i].instruction, 10 + 7 * i, yTextFrame, b.width - 20, 7).properties={rotationAngle:90, shearAngle:20};// create a text box with the entry // // The skewing angle applied to the TextFrame 
      }
      // end of your code ---------

    }
    b.go();


推荐答案

您几乎明白了。在您的代码中,变量 r 已经是一个textFrame对象。

You nearly got it. In your code the variable r is already a textFrame object.

因此应为:

r.shearAngle = 20; 

明天上课见;-)

Edit1

如评论中所述。代码

var r = b.text("txt",x,y,width, height).properties = {something:10};

返回 properties 对象。不是TextFrame。删除 .properties 部分,Benedikts和我的方法应该可以正常工作。

returns the properties object. Not the TextFrame. Remove the .properties part and Benedikts and my way should work.

Edit2:

Benedikts方法不起作用。我收到以下错误。

Benedikts way does not work. I get the following error.

Error: Object does not support the property or method 'shearAngle'

@Benedikt:
shearAngle不是文本属性。它适用于诸如TextFrame,Rectangle,Oval等的pageItem。 Basil.js中是否可以设置此类属性?以及嵌套属性如何?为此,我将设置一个新问题

@Benedikt: shearAngle is not a text property. It is for pageItems like TextFrame, Rectangle, Oval and so on. Is there a way in Basil.js to set properties like these? And how is it with nested properties? I will setup a new question for that.

这篇关于Indesign中的Basil.js和ExtendScript /如何设置textFrames的样式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆