2015-01-13 3 views
2

Я пытаюсь разместить один текст из массива за другим в PSD, используя сценарий Photoshop. Проблема в том, что это может быть не очевидным, если первый текст вписывается в одну строку или нет, потому что я должен разместить второй текст сразу после N пикселей после первого. И если в названии будет 2 строки, я ввернусь.сценарий для фотошоп разместить один текст за другим

Есть ли шанс получить динамическую высоту абзаца или подсчитать строки в абзаце? Или как я могу решить эту проблему?

Вот мой код:

function createTexts() { 
    createText(250, 100, 110, titles[count_psd-1], 1); 
    createText(200, 50, 250, descriptions[count_psd-1], 0); 

    saveImage(); 
} 

function createText(h, fontSize, hPosition, content, light) { 
    var doc = app.activeDocument; 
    var TextLayer = doc.artLayers.add(); 
    TextLayer.kind = LayerKind.TEXT; 
    var txtRef = TextLayer.textItem; 
    txtRef.kind = TextType.PARAGRAPHTEXT; 
    txtRef.antiAliasMethod = AntiAlias.SMOOTH; 
    txtRef.width = 1050; 
    txtRef.height = h; 
    if (lang==0) { 
     if (light==1){ 
      txtRef.font = "HelveticaNeue-UltraLight"; 
     } else { 
      txtRef.font = "HelveticaNeue"; 
     } 
    } else { 
     txtRef.font = "MicrosoftSansSerif"; 
    } 
    txtRef.contents = content; 
    txtRef.size = fontSize; 
    var textPosition = [75,hPosition]; 
    txtRef.position = textPosition; 
} 

Спасибо!

+0

Я ничего не знаю о сценарии photoshop, но если бы я делал это, первой идеей я бы попытался не вручную установить высоту с помощью 'txtRef.height = h;' и посмотреть, автоматически ли она устанавливает высоту после того, как содержимое добавлено. Может стоить попробовать? – musefan

+0

Да, я пробовал это. Но, к сожалению, если вы не устанавливаете высоту абзаца, он считается 0, и текст не отображается. Спасибо за подсказку, хотя! – Denis

ответ

0

Я столкнулся с этим раньше, и лучшее, что я смог сделать, это установить мой абзац намного больше, чем требуется для отображения текста и растеризации копии текстового слоя. Затем я вычислил требуемую высоту из растрированного слоя, чтобы применить обратно к текстовому слою. Наконец я удалил растрированную копию. Болезненное обходное решение, но оно действительно сработало.

 Смежные вопросы

  • Нет связанных вопросов^_^