|
0 Всего найдено: 15
Lazytech
Сообщение
25/07/2009 04:18
Копия темы
Как делать закладки в Adobe Reader при помощи JavaScript Недавно интересовались, как делать закладки в Adobe Reader: www.free-lance.ru/blogs/v... А вот русифицированный код на JavaScript, если кому-то интересно: // bookmark_page.js, ver. 1.0 // visit: // 2009-07-25 (Sat) // slightly modified by Rashid Chembayev a.k.a. Lazytech // to show the relevant submenu and messages in Russian // use this delimiter for serializing our array var bp_delim= '%#%#'; function SaveData( data ) { // data is an array of arrays that needs // to be serialized and stored into a persistent // global string var ds= ''; for( ii= 0; ii< data.length; ++ii ) { for( jj= 0; jj< 3; ++jj ) { if( ii!= 0 || jj!= 0 ) ds+= bp_delim; ds+= data[ii][jj]; } } global.pdf_hacks_js_bookmarks= ds; global.setPersistent( "pdf_hacks_js_bookmarks", true ); } function GetData() { // reverse of SaveData; return an array of arrays if( global.pdf_hacks_js_bookmarks== null ) { return new Array(0); } var flat= global.pdf_hacks_js_bookmarks.split( bp_delim ); var data= new Array(); for( ii= 0; ii< flat.length; ) { var record= new Array(); for( jj= 0; jj< 3 && ii< flat.length; ++ii, ++jj ) { record.push( flat[ii] ); } if( record.length== 3 ) { data.push( record ); } } return data; } function AddBookmark() { // query the user for a name, and then combine it with // the current PDF page to create a record; store this record var label= // app.response( "Bookmark Name:", // "Bookmark Name", app.response( "Название закладки:", "Название закладки", "", false ); if( label!= null ) { var record= new Array(3); record[0]= label; record[1]= this.path; record[2]= this.pageNum; data= GetData(); data.push( record ); SaveData( data ); } } function ShowBookmarks() { // show a pop-up menu; this seems to only work when // a PDF is alreay in the viewer; var data= GetData(); var items= ''; for( ii= 0; ii< data.length; ++ii ) { if( ii!= 0 ) items+= ', '; items+= '"'+ ii+ ': '+ data[ii][0]+ '"'; } // assemble the command and the execute it with eval() var command= 'app.popUpMenu( '+ items+ ' );'; var selection= eval( command ); if( selection== null ) { return; // exit } // the user made a selection; parse out its index and use it // to access the bookmark record var index= 0; // toString() converts the String object to a string literal // eval() converts the string literal to a number index= eval( selection.substring( 0, selection.indexOf(':') ).toString() ); if( index< data.length ) { try { // the document must be 'disclosed' for us to have any access // to its properties, so we use these FirstPage NextPage calls // app.openDoc( data[index][1] ); app.execMenuItem( "FirstPage" ); for( ii= 0; ii< data[index][2]; ++ii ) { app.execMenuItem( "NextPage" ); } } catch( ee ) { var response= // app.alert("Error trying to open the requested document.\nShould I remove this bookmark?", 2, 2); app.alert("Не получается открыть запрошенный документ!\nУдалить данную закладку?", 2, 2); if( response== 4 && index< data.length ) { data.splice( index, 1 ); SaveData( data ); } } } } function DropBookmark() { // modelled after ShowBookmarks() var data= GetData(); var items= ''; for( ii= 0; ii< data.length; ++ii ) { if( ii!= 0 ) items+= ', '; items+= '"'+ ii+ ': '+ data[ii][0]+ '"'; } var command= 'app.popUpMenu( '+ items+ ' );'; var selection= eval( command ); if( selection== null ) { return; // exit } var index= 0; index= eval( selection.substring( 0, selection.indexOf(':') ).toString() ); if( index< data.length ) { data.splice( index, 1 ); SaveData( data ); } } function ClearBookmarks() { // if( app.alert("Are you sure you want to erase all bookmarks?", 2, 2 )== 4 ) { if( app.alert("Вы действительно хотите удалить все закладки?", 2, 2 )== 4 ) { SaveData( new Array(0) ); } } app.addMenuItem( { cName: "-", // menu divider cParent: "View", // append to the View menu cExec: "void(0);" } ); app.addMenuItem( { // cName: "Bookmark This Page &5", cName: "Сделать закладку &5", cParent: "View", cExec: "AddBookmark();", cEnable: "event.rc= (event.target != null);" } ); app.addMenuItem( { // cName: "Go To Bookmark &6", cName: "Открыть закладку &6", cParent: "View", cExec: "ShowBookmarks();", cEnable: "event.rc= (event.target != null);" } ); app.addMenuItem( { // cName: "Remove a Bookmark", cName: "Удалить закладку", cParent: "View", cExec: "DropBookmark();", cEnable: "event.rc= (event.target != null);" } ); app.addMenuItem( { // cName: "Clear Bookmarks", cName: "Удалить все закладки", cParent: "View", cExec: "ClearBookmarks();", cEnable: "event.rc= true;" } ); Прямая ссылка на Zip-архив с оригинальным скриптом: Также см. приложенный Zip-архив с русифицированным скриптом. Первоисточник: Этот JS-код нужно сохранить в следующей папке: "C:\Documents and Settings\%USERNAME%\Application Data\Adobe\Acrobat\9.0\Javascripts" (по крайней мере, так обстоит дело в моем случае). Все закладки будут сохраняться в файле glob.js, который находится в той же папке "JavaScripts". При необходимости разрешите выполнение JavaScript в Adobe Reader: Ctrl + K -> JavaScript Затем надо будет перезапустить Adobe Reader. Как добавить закладку: View -> Bookmark This Page или в русской версии: View -> Сделать закладку Вместо этого можно использовать горячие клавиши: Alt + V, 5 Откроется диалоговое окно, где нужно будет ввести название закладки, а потом нажать OK. Чтобы воспользоваться имеющейся закладкой, важно, чтобы в Adobe Reader так уж он устроен был открыт (любой) документ! Как открыть закладку: View -> Go To Bookmark или в русской версии: View -> Открыть закладку Вместо этого можно использовать горячие клавиши: Alt + V, 6 Всплывет меню с названиями закладок, где можно будет выбрать нужную; после этого Adobe Reader откроет тот документ на той самой странице. Как удалить закладку: View -> Remove a Bookmark или в русской версии: View -> Удалить закладку Всплывет меню с названиями закладок, где можно будет выбрать ту, которую нужно удалить. При желании можно удалить сразу все закладки: View -> Clear Bookmarks или в русской версии: View -> Удалить все закладки
art_designer
Сообщение
25/07/2009 10:05
Копия темы
А в висте такой путь подойдет? C:\Users\username\AppData\Roaming\Adobe Просто папка апликайшен дата не открывается.
Lazytech
Сообщение
25/07/2009 10:12
Копия темы
К сожалению, в Висте совершенно не разбираюсь, у меня WinXP. В крайнем случае можно еще попробовать сделать глобальный поиск папки с названием "JavaScripts" (или файлов "glob.js" и "glob.settings.js", которые находятся в этой папке), а потом просто поместить в эту папку скрипт "bookmark_page_rus.js" (или "bookmark_page.js", если нужна оригинальная английская версия). Могу еще поделиться самописным Forth-скриптом (работает под nnCron) для автоматической регистрации всех PDF-документов, просматриваемых в Adobe Reader. Он, правда, закладки делать не умеет, а только ведет текстовые логи.
art_designer
Сообщение
25/07/2009 10:13
Копия темы
Вроде разобрался, щас буду пробовать как это работает)
art_designer
Сообщение
25/07/2009 10:17
Копия темы
Папка жокумен и сетингс не открывается, но если в проводник скопировать путь C:\Documents and Settings\%USERNAME%\Application Data\Adobe\Acrobat\9.0\ то он все открывает)) В общем проверил, все работает шикарно, спасибо!
Lazytech
Сообщение
25/07/2009 10:26
Копия темы
Пожалуйста :-) А то, что какие-то папки не открываются это, случаем, не из-за настроек Висты по (не)отображению скрытых файлов и папок? Напомню, что в Проводнике (Explorer) под WinXP можно разрешить отображение скрытых файлов и папок следующим образом: Сервис -> Свойства папки -> Вид Там нужно выставить "Показывать скрытые файлы и папки в "Скрытые файлы и папки". Кстати, для таких случаев неплохо иметь под рукой Total Commander или Far (сам крайне редко использую Explorer для просмотра, копирования и перемещения файлов).
Lazytech
Сообщение
25/07/2009 10:30
Копия темы
OFF Чуть не забыл спасибо администрации Free-lance.ru за весьма оперативную доставку уведомлений о комментах в блогах :-)
Lazytech
Сообщение
25/07/2009 11:19
Копия темы
Если интересно, выложил nnCron-скрипт для логирования просматриваемых PDF-файлов: www.free-lance.ru/blogs/v...
art_designer
Сообщение
25/07/2009 12:46
Копия темы
Ну я привык к эксплореру. А не открываются не из-за этого, в свойствах папки я предварительно все разрешил.
Lazytech
Сообщение
25/07/2009 12:57
Копия темы
А я и не предлагал полностью отказываться от встроенных программ, хотя любители пользоваться клавиатурой (а не мышью) обычно предпочитают какой-нибудь двухпанельный файловый менеджер :-) К примеру, сам использую именно Explorer (вызываю по Win + E) для того, чтобы быстро посмотреть размер свободного места на логических дисках. Удобно, ничего не скажешь.
romavp
Сообщение
26/05/2010 20:24
Копия темы
Спасибо работает, только как подправить чтоб не дублировалось на двух языках?
Lazytech
Сообщение
27/05/2010 02:24
Копия темы
А там разве что-то дублируется? В той версии, что Вы видите, всё должно быть на русском. Ведь // означает, что код закомментирован.
romavp
Сообщение
03/06/2010 03:21
Копия темы
Да я же скриншот сделал.
Lazytech
Сообщение
03/06/2010 03:32
Копия темы
0
Даже не знаю, как помочь... Пример: // cName: "Bookmark This Page &5", cName: "Сделать закладку &5", Как видно, в начале строки с "Bookmark This Page &5" стоит знак комментария // . То же самое — в других случаях. Возможно, у Вас добавлено два файла .js — к примеру, не только русифицированный, но и оригинальный? Если нет, то копайте у себя, а я никаких других причин возникновения указанной проблемы не вижу. Тему считаю закрытой. |
Выразить восторг, поругаться или предложить что-нибудь можно на форуме |
Для обсуждения этого сервиса так же есть темы на фрилансе по поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал" |