2017/09/20

Photoshop script 「テキストレイヤーのテキストをプレーンテキストで取得する」

テキストレイヤーのテキストをコピーするとテキストスタイルや情報もついてきて一旦メモ帳などへコピペしてると思うんですが、いい方法があったので解決策を。
ただしWindowsのみです。

var curLayer = app.activeDocument.activeLayer;

var folderForTempFiles = Folder.temp.fsName;

//バッチファイル用のテキスト生成
var clipTxtFile =new File(folderForTempFiles + "/ClipBoard.txt"); 
clipTxtFile.open('w'); 
clipTxtFile.write(curLayer.textItem.contents); 
clipTxtFile.close();

//バッチファイルを生成して実行
var clipBatFile =new File(folderForTempFiles + "/ClipBoard.bat"); 
clipBatFile.open('w'); 
clipBatFile.writeln("clip.exe < \"" + folderForTempFiles + "\\ClipBoard.txt\"");
clipBatFile.close(); 
clipBatFile.execute();

という感じで作成。

テキストオブジェクトの内容を取得してクリップボードへ渡すのですが。
「コピーする」というOS標準機能を使用するのが案外面倒なのです。
調べた挙句、海外フォーラムで発見したのが・・・

クリップボードを起動するバッチファイルを作成してパラメーターとしてテキストを渡す。という荒業。

実行するとコマンドプロンプトが出てきて外部プログラムであるクリップボードが起動するわけです。一瞬だけ。
コピーした情報は基本的に元来よりクリップボードへ送られるWindowsの仕様なので無事にCtrl+Cの挙動を再現できたわけですね。

使いたい人は自己責任ですが.jsxで保存すれば動くと思います。
動作環境はWin7+Photoshop CS5。

0 件のコメント:

コメントを投稿