インデザインのmetadata情報からxapGImgをJPEGで保存するスクリプト
アドビのフォーラムのExtract indesign previewより
ほぼそのまんまのスクリプトです。
これを参考にすれば以前、挑戦してあきらめてたAIファイルからサムネールを取り出す試み【失敗】も解決できそう。
/*The Base 64 decoder is from Stephen Ostermiller's site: http://ostermiller.org/calc/encode.html Preview extractor from Thomas Nielsen */ var file_name = 'thumb.jpg'; var saveFol = Folder.selectDialog (); var END_OF_INPUT = -1; var base64Chars = new Array( 'A','B','C','D','E','F','G','H', 'I','J','K','L','M','N','O','P', 'Q','R','S','T','U','V','W','X', 'Y','Z','a','b','c','d','e','f', 'g','h','i','j','k','l','m','n', 'o','p','q','r','s','t','u','v', 'w','x','y','z','0','1','2','3', '4','5','6','7','8','9','+','/' ); var reverseBase64Chars = new Array(); for (var i=0; i < base64Chars.length; i++){ reverseBase64Chars[base64Chars[i]] = i; } function decodeBase64(str){ setBase64Str(str); var result = ""; var inBuffer = new Array(4); var done = false; while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT && (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){ inBuffer[2] = readReverseBase64(); inBuffer[3] = readReverseBase64(); result += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4)); if (inBuffer[2] != END_OF_INPUT){ result += ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2)); if (inBuffer[3] != END_OF_INPUT){ result += ntos((((inBuffer[2] << 6) & 0xff) | inBuffer[3])); } else { done = true; } } else { done = true; } } return result; } function setBase64Str(str){ base64Str = str; base64Count = 0; } function readReverseBase64(){ if (!base64Str) return END_OF_INPUT; while (true){ if (base64Count >= base64Str.length) return END_OF_INPUT; var nextCharacter = base64Str.charAt(base64Count); base64Count++; if (reverseBase64Chars[nextCharacter]){ return reverseBase64Chars[nextCharacter]; } if (nextCharacter == 'A') return 0; } return END_OF_INPUT; } function ntos(n){ n=n.toString(16); if (n.length == 1) n="0"+n; n="%"+n; return unescape(n); } var myString = app.activeDocument.metadataPreferences.getProperty("http://ns.adobe.com/xap/1.0/","Thumbnails/*[1]/xapGImg:image"); myString = myString.replace("
", "\n"); jpeg_string = decodeBase64 (myString); jpeg_file = new File (saveFol+"/"+file_name); jpeg_file.encoding = 'binary'; jpeg_file.open ('w'); jpeg_file.write (jpeg_string); jpeg_file.close();
最初のページしかサムネール情報がないけどね。
PDF書き出して画像化が王道かしら。