// psdExportText_selectedL_File - Adobe Photoshop Script // Requirements: Adobe Photoshop CS3, or higher, OS X only (for now) // Description: exports selected layers (if text) to separate text files // Version: 0.9.0 // Author: Matt Irwin // Website: http://www.thunderouscrickets.com // ============================================================================ // Installation: // Setup Shell Script // 1. Place script in '/Applications/Adobe\ Photoshop\ CS#/Presets/Scripts/' // 2. Restart Photoshop // 3. Choose File > Scripts > psdExportText_selectedL_File // ============================================================================ var mSelectFolder, mFilePrefix; function main() { mSelectFolder = Folder.selectDialog("Select location to save files"); mFilePrefix = prompt("Enter filename prefix"); exportSelectedLayersCollection(); } function exportTextFromLayer(count) { var currentLayer = activeDocument.activeLayer; if (currentLayer.kind == LayerKind.TEXT) { //alert(currentLayer.textItem.contents); var cfilePath = mSelectFolder + "/"+mFilePrefix+"_"+count+".txt"; var cfile = new File(cfilePath); cfile.lineFeed = "Unix"; cfile.open("w"); cfile.seek(0); cfile.writeln(currentLayer.textItem.contents); cfile.close(); } } function exportSelectedLayersCollection(){ var selectedLayers = getSelectedLayersIdx(); for( var l = 0;l < selectedLayers.length; l++){ makeActiveByIndex( selectedLayers[ l ], false ); exportTextFromLayer(l); } makeActiveByIndex( selectedLayers, false ); } function hasBackground(){ var res = undefined; try{ var ref = new ActionReference(); ref.putProperty( 1349677170 , 1315774496); ref.putIndex( 1283027488, 0 ); executeActionGet(ref).getString(1315774496 );; res = true; }catch(e){ res = false} return res; } function getSelectedLayersIdx(){ var selectedLayers = new Array; var ref = new ActionReference(); ref.putEnumerated( charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') ); var desc = executeActionGet(ref); if( desc.hasKey( stringIDToTypeID( 'targetLayers' ) ) ){ desc = desc.getList( stringIDToTypeID( 'targetLayers' )); var i = 0; var c = desc.count; var offset = 0; var selectedLayers = new Array(); if(!hasBackground()){ offset = 1; } for(i;i 0 ) { var idselectionModifier = stringIDToTypeID( 'selectionModifier' ); var idselectionModifierType = stringIDToTypeID( 'selectionModifierType' ); var idaddToSelection = stringIDToTypeID( 'addToSelection' ); desc.putEnumerated( idselectionModifier, idselectionModifierType, idaddToSelection ); } desc.putBoolean( charIDToTypeID( 'MkVs' ), visible ); executeAction( charIDToTypeID( 'slct' ), desc, DialogModes.NO ); } } function isCorrectVersion() { if (parseInt(version, 10) >= 10) { return true; } else { alert('This script requires Adobe Photoshop CS3 or higher.', 'Wrong Version', false); return false; } } function isOpenDocs() { if (documents.length) { return true; } else { alert('There are no documents open.', 'No Documents Open', false); return false; } } function showError(err) { if (confirm('An unknown error has occurred.\n' + 'Would you like to see more information?', true, 'Unknown Error')) { alert(err + ': on line ' + err.line, 'Script Error', true); } } if (isCorrectVersion() && isOpenDocs()) { try { activeDocument.suspendHistory('Export Selected TextLayers to Clipboard', 'main()'); } catch(e) { if (e.number != 8007) { // don't report error on user cancel showError(e); } } }