将不带符号的字符/段落样式导出到javascript
exporting indesign character / paragraph styles to javascript
如果我设置了文档的段落/字符样式,如何将它们导出为javascript,以便通过javascript脚本重新创建它们?
字符和段落样式中的唯一属性数量非常多;在CS4中,大约170个段落,大约80个字符。这既包括熟悉的(name
,tracking
),也包括奇怪的(otfTitling
,underlineGapOverprint
,gradientStrokeLength
)。幸运的是,很少需要一个风格的精确克隆(包括其所有属性)。此外,字符样式通常只定义几个特性。
从无到有创建样式的最简单方法是为所有值假设合理的默认值,并且仅设置偏离的属性。
不过也有一些注意事项。有些属性需要在其他地方创建新项,例如样式的fillColor
。脚本是否也应该重新创建此颜色?如果它已经存在,但具有不同的值或颜色模型,该怎么办?(它应该使用现有的颜色、覆盖它还是创建一个新的颜色?)如果颜色值存在,但使用另一个名称怎么办?(它应该扫描现有列表中的匹配项吗?)"父"样式也是如此;如果需要创建一整棵样式树怎么办?dropCapStyle
、nestedStyles
、nestedGrepStyles
和nestedLineStyles
呢?这些需要重新创建字符样式吗?
另一个潜在的陷阱是使用中的测量单元。有些属性是"绝对的",例如pointSize
;其他取决于水平(leftIndent
)或垂直(spaceBefore
)规则设置。(我下面的脚本在运行脚本时保存中使用的单元,并在完成后恢复它们。)
下面的脚本编写了一个新的脚本,该脚本定义了一个可以轻松编辑和附加的属性列表(请记住上述注意事项)。所有段落/字符样式属性的完整列表可以在ESTK帮助菜单中找到,也可以在线ParagraphStyle和CharacterStyle*找到。
这只是一个基本框架,它可以很容易地用于其他目的。请注意,它是硬编码的,以使用特定的样式名称;Body Text
——可以用代替
var parstyle = app.selection[0].appliedParagraphStyle;
如果您想在有样式的段落中单击以保存其样式。还可以对其进行调整以创建字符样式,在这种情况下,您需要测试属性是否为未定义,也就是说,它是否不是重写。
//DESCRIPTION: Create a script to create a par-style
// A Jongware Script 28-Sep-2014
var parstyle = app.activeDocument.paragraphStyles.item("Body Text");
var reference = app.activeDocument.paragraphStyles.item(0);
var properties = [
"name",
"appliedFont",
"fontStyle",
"pointSize",
"leading",
"hyphenation",
"justification",
"firstLineIndent",
"leftIndent",
"rightIndent",
"spaceBefore",
"spaceAfter"
];
r = [];
for (i=0; i<properties.length; i++)
{
if (parstyle[properties[i]] != reference[properties[i]])
{
if (parstyle[properties[i]].hasOwnProperty('name'))
r.push ([properties[i], '"'+parstyle[properties[i]].name+'"']);
else
{
if (parstyle[properties[i]].constructor.name == 'String')
r.push ([properties[i], '"'+parstyle[properties[i]]+'"']);
else
r.push ([properties[i], parstyle[properties[i]]]);
}
}
}
scriptFile = File(app.activeScript.path+'/create_'+parstyle.name+'.jsx');
if (scriptFile.open('w') == false)
{
alert ("Unable to create new script!");
} else
{
d = new Date();
scriptFile.writeln ('//DESCRIPTION: create par style '"'+parstyle.name+'"');
scriptFile.writeln ('// A Jongware Subscript '+d.getDate()+'-'+['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'][d.getMonth()]+'-'+d.getFullYear());
scriptFile.writeln ();
scriptFile.writeln ('with (app.activeDocument.viewPreferences)');
scriptFile.writeln ('// save current measurement units');
scriptFile.writeln ('{'tvar ph = horizontalMeasurementUnits;');
scriptFile.writeln (''tvar pv = verticalMeasurementUnits;');
scriptFile.writeln ('// set measurement units:');
scriptFile.writeln (''thorizontalMeasurementUnits = '+app.activeDocument.viewPreferences.horizontalMeasurementUnits+';');
scriptFile.writeln (''tverticalMeasurementUnits = '+app.activeDocument.viewPreferences.verticalMeasurementUnits+';');
scriptFile.writeln ('};');
scriptFile.writeln ('app.activeDocument.paragraphStyles.add({');
for (i=0; i<r.length; i++)
{
scriptFile.writeln (''t'+r[i][0]+': '+r[i][1]+',');
}
scriptFile.writeln ('});');
scriptFile.writeln ('// restore original measurement units');
scriptFile.writeln ('with (app.activeDocument.viewPreferences)');
scriptFile.writeln ('{'thorizontalMeasurementUnits = ph;');
scriptFile.writeln (''tverticalMeasurementUnits = pv;');
scriptFile.writeln ('};');
scriptFile.close();
}
*我对Adobe官方帮助文件的重新解释的在线版本,与他们的ESTK一起提供。各种可下载版本可在http://www.jongware.com/idjshelp.html.麻省理工学院的带宽由约翰·霍金森先生礼貌地提供
- 跟踪在页面加载时应用内联样式的JavaScript
- 如果文本字段为空,则使用JavaScript应用CSS样式
- W3C循环样式的JavaScript
- jQuery/JavaScript在线公文包表单-打印样式表
- javascript问题正文样式
- 如何提供在javascript中编写对对象的重复访问以设置元素样式的简写
- 如何在小部件中添加外部javascript库和样式表
- 使用javascript单击同一按钮,在两种样式之间更改css值
- 如何确定相对较新版本的IE的高度和宽度(IE8不喜欢从JavaScript设置这种样式吗?
- 使用XPath样式访问Javascript JSON对象属性
- Visual Studio 2012:更改javascript注释样式
- 我应该用K&编写javascript时的R样式
- Javascript+动态菜单+当前链接样式(CSS)+基于PHP的网站
- 如何使用外部Javascript库(如jQuery)重命名Google闭包样式表
- 显示隐藏样式 JavaScript 选项卡菜单
- 列出所有可用的CSS样式javascript
- 当向下滚动时改变样式(javascript)
- 样式Javascript下拉菜单
- 选中所有带有样式javascript类的复选框'工作
- 防止在调整大小后改变响应式网页样式(JavaScript)