Javascript Photoshop脚本:创建一个选择,然后在其中安装一个文本框

Javascript Photoshop脚本:创建一个选择,然后在其中安装一个文本框,javascript,adobe,photoshop,extendscript,photoshop-script,Javascript,Adobe,Photoshop,Extendscript,Photoshop Script,使用Javascript for Photoshop(ExtendScript),我正在尝试创建一个动态文本框 我的最终目标是一个脚本,用户将自己的文本写入一个新的弹出窗口,然后文本定位在图像的底部10%,动态缩放以适应图像的底部10% 因此,无论较低的10%(由resizeCanvas参数创建)的维度是什么,文本总是舒适地适合它。因此,当用户添加几个单词时,它看起来不会太小,而当用户添加更长的句子时,它也不会太夸张 这里最初提出的问题(附图片) 示例开始图像: 窗口弹出窗口: 小文本结果:

使用Javascript for Photoshop(ExtendScript),我正在尝试创建一个动态文本框

我的最终目标是一个脚本,用户将自己的文本写入一个新的弹出窗口,然后文本定位在图像的底部10%,动态缩放以适应图像的底部10%

因此,无论较低的10%(由resizeCanvas参数创建)的维度是什么,文本总是舒适地适合它。因此,当用户添加几个单词时,它看起来不会太小,而当用户添加更长的句子时,它也不会太夸张

这里最初提出的问题(附图片)

示例开始图像:

窗口弹出窗口:

小文本结果:

长文本结果:

这就是我目前的处境:

#目标Photoshop
app.preferences.rulerUnits=单位.PIXELS;
app.preferences.typeUnits=typeUnits.PIXELS;
var doc=app.activeDocument;
var hgt10=单据高度/10;
var FillColor=新SolidColor;
FillColor.rgb.hexValue='ff0000';
var newHgt=单据高度+hgt10
文档大小画布(文档宽度、新高度、主播位置、TOPCENTER);
var win=新窗口(“对话框”,“自定义文本”);
var grp1=赢加('集团');
grp1.alignChildren=“top”;
var txt=grp1.add('edittext',[0,0300150],“写你的消息”,{multiline:true,scrolling:true});
txt.active=true;
var grp2=赢加(“集团”);
var goBtn=grp2.add('button',未定义,“Run”);
grp2.添加(“按钮”,未定义,“取消”);
var newLyr=doc.artLayers.add();
newLyr.kind=LayerKind.TEXT;
//内容
var txtLyr=newLyr.textItem
txtLyr.font=“ArialMT”
txtLyr.contents=txt.text
var uV=新单位值(20,'mm')
txtLyr.size=单位值(25,'mm')
txtLyr.color=填充颜色;
txtLyr.position=[252200]//x,y-需要固定位置以适应较低的10%
goBtn.onClick=函数(){
win.close();
}  

win.show()
若要添加换行符,请将所有的
\n
替换为
\r
s(至少对于Windows,我感觉这个Mac版本可能需要其他东西,但我不确定):

要定位文本,您需要知道大小(取决于行号)和行距

var lines = txt.text.split('\n'); //getting the number of lines
var maxSize = hgt10 / lines.length; //calculating max size for a line (including the leading) = 10% of doc height devided by lines number
newLyr.textItem.useAutoLeading = true // making sure that text uses autoleading
var leading = newLyr.textItem.autoLeadingAmount; //autoleading value is in % of text size
maxSize = maxSize / leading * 100; // recalculating text size based on leading in pixels
txtLyr.size = maxSize;
txtLyr.position = [25, originalDocHeight + maxSize]
一行和多行的结果:


若要添加换行符,请将所有的
\n
替换为
\r
s(至少对于Windows,我感觉这个Mac版本可能需要其他东西,但我不确定):

要定位文本,您需要知道大小(取决于行号)和行距

var lines = txt.text.split('\n'); //getting the number of lines
var maxSize = hgt10 / lines.length; //calculating max size for a line (including the leading) = 10% of doc height devided by lines number
newLyr.textItem.useAutoLeading = true // making sure that text uses autoleading
var leading = newLyr.textItem.autoLeadingAmount; //autoleading value is in % of text size
maxSize = maxSize / leading * 100; // recalculating text size based on leading in pixels
txtLyr.size = maxSize;
txtLyr.position = [25, originalDocHeight + maxSize]
一行和多行的结果: