Photoshop JSX Как скопировать произвольный текст в буфер обмена?

Прямо сейчас я использую команду приглашения в качестве обходного пути для копирования произвольного текста из моего сценария JSX в Photoshop.

prompt("to copy",(horizontalcenter.toString()) + ", " + verticalcenter.toString());

И это дает мне информацию, которую я хочу. «Копировать» просто указывает заголовок, а информация, которую я хочу скопировать из Photoshop, уже выбрана в поле подсказки. Так что все, что мне нужно сделать, это нажать клавишу C, перейти в Notepad++, где мне нужна эта информация, и нажать клавишу V.

Работает, но можно быстрее. Должен быть способ скопировать эту информацию из Photoshop прямо в буфер обмена, не так ли?


person Lars Markelson    schedule 01.11.2010    source источник
comment
Возможное решение - записать строку в текстовый слой на изображении. Затем используйте ограниченные методы сценариев буфера обмена в Photoshop. Для моей справки позже, они работают с объектами ArtLayer/Selection/Document. Но только ArtLayer и Selection имеют копию. Дополнительную информацию см. на стр. 54 Руководства по созданию сценариев Adobe CS4: adobe.com/content/dam/Adobe/en/devnet/photoshop/pdfs/   -  person Lars Markelson    schedule 01.11.2010
comment
У кого-нибудь есть решение, которое работает на Mac?   -  person Aaron    schedule 09.05.2012


Ответы (2)


Photoshop 13.1 (последняя версия Creative Cloud для Photoshop CS6) теперь имеет функцию, позволяющую делать это напрямую. Вот пример функции:

function copyTextToClipboard( txt )
{
    const keyTextData         = app.charIDToTypeID('TxtD');
    const ktextToClipboardStr = app.stringIDToTypeID( "textToClipboard" );

    var textStrDesc = new ActionDescriptor();

    textStrDesc.putString( keyTextData, txt );
    executeAction( ktextToClipboardStr, textStrDesc, DialogModes.NO );
}

Обратите внимание, что это не будет работать в версиях Photoshop до 13.1.

person J. Peterson    schedule 21.12.2012

Нашел ответ на форуме сценариев Photoshop.

http://ps-scripts.com/bb/viewtopic.php?f=9&t=3097&p=15324&hilit=clipboard&sid=1b1cc023023b9f91ab46e30e48e2ab53#p15324

function copyTextToClipboard(text)
{
   var folderForTempFiles = Folder.temp.fsName;

   // create a new textfile and put the text into it
   var clipTxtFile =new File(folderForTempFiles + "/ClipBoard.txt"); 
   clipTxtFile.open('w'); 
   clipTxtFile.write(text); 
   clipTxtFile.close();

   // use the clip.exe to copy the contents of the textfile to the windows clipboard
   var clipBatFile =new File(folderForTempFiles + "/ClipBoard.bat"); 
   clipBatFile.open('w'); 
   clipBatFile.writeln("cat \"" + folderForTempFiles + "/ClipBoard.txt\"|clip"); 
   clipBatFile.close(); 
   clipBatFile.execute();
}

Он помещает текст, который вы хотите скопировать, во временный текстовый файл, а затем копирует его из этого текстового файла. Я даже не знал, что можно поместить текст в текстовый файл. Очевидно, возможности javascript в Photoshop намного мощнее, чем я думал!

person Lars Markelson    schedule 03.11.2010
comment
Стоит отметить, что этот ответ относится только к Windows, хотя вы можете сделать что-то подобное в OS X с помощью pbcopy. - person Yona Appletree; 23.10.2015