Photoshop JSX - Как скопировать произвольный текст в буфер обмена? - PullRequest
4 голосов
/ 01 ноября 2010

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 21 декабря 2012

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

4 голосов
/ 03 ноября 2010

Найден ответ на скриптовом форуме Photoshop.

http://ps -scripts.com / bb / viewtopic.php? F = 9 & t = 3097 & p = 15324 & hilit = буфер обмена & 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 гораздо мощнее, чем я предполагал!

...