Acrobat автоматическое добавление ссылок в *.pdf InvokeMember(addLink) по выбранным словам - C#
Формулировка задачи:
Пытаюсь найти работу программистом C# ... и прочее рядом. Пока нет успеха. Решил сдать экзамен 70-483, чтобы вписать его номер в резюме(может поможет? ).
Нашёл книгу в pdf формате. Она на английском. Читать могу, но всё же не всё схватываю точно. Приходится переводить некоторые слова. И они с первого раза не запоминаются. Встречаются в тексте дальше. И опять их искать.
Для этого решил в этой книге отметить все слова что перевожу в Автоматическом режиме. Чтобы это слово по всей книге было отмечено ссылкой на внешний файл. Нажал на него и открываешь заготовленный перевод, или произношение его. Или ссылку в www.
написал программку. Не совершенство. Но это единственное что есть.
https://cloud.mail.ru/public/cb188862fcd4%2FHTML_DOC.rar
https://cloud.mail.ru/public/cb188862fcd4%2FHTML_DOC.rar
это ссылка на весь каталог. Как есть.
объяснения как пользоваться:
Это старт программы.
Здесь вводятся ссылки на pdf файл и 2 ссылки на ЛОКАЛЬНЫЕ файлы компьютера.
в моём примере это перевод слова "await" и ссылка для примера на mp3 файл, как будто это его произношение.
После переходите на второй экран и там выбирается стартовая(24) страница и стоповая(26 в примере. 25 это уже после срабатывания).
По умолчанию до конца файла.
radioBatton по умолчанию стоит на "File".
Жмёте кнопку "Find + Link".
На этом этапе происходит поиск слова (в примере await) и вставка бланков памяти в файл, для дальнейшего редактирования. Можно увидеть после сохранения их в таком виде:
Но они НЕ РАБОЧИЕ. Это просто резервирование пространства в файле для правильного БИНАРНОГО редактирования.
Это так как выглядит файл после прохождения по нему и бронирования пространства для переделывания.
Жмёте следующую кнопку "Underline". Она открывает тот самый НЕ рабочий файл и переделывает Внешний вид ссылок с "квадратных" в "подчёркнутый" вид. И так же заменяет болванки в файле
<</JS(z1x2y3)/S/JavaScript>>
<</JS(c3b2a1)/S/JavaScript>>
<</Names(aaaaaaa ....
<</JS(//// ....
на правильную информацию:
<</F 28742 0 R/S/Launch>>
<</F 28741 0 R/S/Launch>>
<</F(../../../English/dictionary/A/await/await.htm)/Type/Filespec/UF
<</F(../../../English/words_voices/_K/Kalimba.mp3)/Type/File ...
После этого происходит сохранение изменений в новый файл по правилу:
"старое имя" + "_tmp_" + "искомое слово"
его можно будет найти рядом
В моём примере это выглядит так:
Exam Ref 70-483.pdf
пересохраняется в:
Exam Ref 70-483.pdf_tmp_await.pdf
Выглядит результат так:
Как можете увидеть, ссылка стала выглядеть как и обычная HTML ссылка.
Это всё про "File".
Про radioButton "URI":
Идея и действия все те же самые. Но внутри файл выглядит чуть по другому.
У него там другие спецификации:
<</S/URI/URI(../../../English/words_voices/_K/Kalimba.mp3)>>
<</S/URI/URI(../../../English/dictionary/A/await/await.htm)>>
То есть видно что спецификация PDF изменяется с:
/Type/Filespec/UF
на
/S/URI/URI
Так же можете в ЭТОМ случае давать ссылки на WWW.
<</S/URI/URI(https://www.google.com/?gws_rd=ssl)>>
<</S/URI/URI(http://ya.ru/)>>
будут открываться эти ссылки.
Это есть в примерах в архиве, в ссылке вверху.
Там же лежит весь проект в исходном виде.
Если разархивировать весь архив как есть. То можно сразу пойти в каталог:
HTML_DOC\Program\CS\Exam70-483
и тут попробовать с примерами:
File
URI
WWW
там же и оригинал, без переделок.
Программировал и пользовался такими функциями в C#:
InvokeMember("getPageNumWords" для выборки всех слов на странице
InvokeMember("getPageNthWord" охватывающий слово("await") прямоугольник
InvokeMember("addLink" добавление Link используя движок Adobe
InvokeMember("setAction" резервирование памяти в файле для переделывания.
BinaryReader binaryReader + BinaryWriter bw
для редактирования файла в БИНАРНОМ режиме. В текстовом НЕЛЬЗЯ этого делать.
В Reference добавлял ссылку на Adobe
Пробовал запускать на Android. С полным копированием путей. Но не удачно. Запускал под:
Adobe Acrobat - работают только ссылки WWW
EBookDroid - тоже работают ссылки на WWW.
либо там не сходятся пути. Буду пробовать сделать их полностью Абсолютными. Но нет веры в успех.
Почему WWW ссылки срабатывают, на локальную файловую систему нет?
Всего хорошего. Кто будет пробовать?
программный код не Совершенен. Я просто шёл к цели для получения результата в 2-ух видах File + URI. Работает. Можно и посовершенствовать. Хотелось чтобы работало под Android. Это так удобно всё иметь на нём. Со всеми ссылками и архивами. Вся библиотека в кармане.
А дома на стационарном компьютере переделывать/готовить, потом перезаливать.
Решение задачи: «Acrobat автоматическое добавление ссылок в *.pdf InvokeMember(addLink) по выбранным словам»
textual
Листинг программы
private List<string> fontsExcuded; //private SortedList<string, DocumentFont> ThisPdfDocFonts; private List<pfdFonts> ThisPdfDocFonts;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д