Укороченная версия:
- Можно ли каким-либо образом заставить MS Word 2007 (или новее) кодировать относительные гиперссылки (гиперссылка, указывающая, например, на другой файл PDF), используя
Launch
вместо этого Тип действияURI
(оба типа указаны на стр. 653 в формате Adobe Portable Document Format, PDF Reference, версия 1.7, шестое издание - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf )? Или это единственное решение для реализации постпроцессора, который может заменить все «неправильные»URI
закодированные гиперссылки на ихLaunch
эквиваленты?
Разработанная версия:
У меня есть два документа Word; doc1.docx
и doc2.docx
(оба скомпилированы с MS Word 2007).
В doc1.docx
I место гиперссылки на PDF версию моего второго документа ( doc2.pdf
) - так что теперь я получил:
Затем я сохраняю doc1.docx
файл как .docx
и .pdf
- PDF
генерация обрабатывается встроенным PDF-издателем в MS Word 2007 с использованием следующих параметров:
Пока все хорошо - у меня есть следующая структура папок:
/superuser
- doc1.docx
- doc1.pdf
- doc2.docx
- doc2.pdf
Затем я открываю doc1.pdf
с помощью Adobe Reader X (версия 10.1.3) и нажимаю на гиперссылку, указывающую на doc2.pdf
. Поскольку ссылка является относительной, я бы предположил / предположил, что Adobe Reader X просто откроет целевой файл PDF в отдельном окне или в том же экземпляре Adobe Reader X (в зависимости от параметра, Open cross-document links in same window
указанного в:) Edit -> Preferences -> Documents
.
Однако это не так. Вместо этого Adobe Reader X разрешает гиперссылку с помощью браузера по умолчанию (в моем случае Google Chrome v21 + на Windows 7 x64) - и, чтобы было ясно - в этом проблема . Я хочу, чтобы Adobe Reader X (и большинство его предшественников) просто разрешил гиперссылку, открыв целевой PDF-файл в другом экземпляре Adobe Reader X (при условии, что я не выбрал Open cross-document links in same window
опцию). Повторение того же сценария с использованием моего (по умолчанию) PDF Reader; Sumatra PDF работает должным образом - Sumatra PDF открывает целевой файл PDF в отдельном окне и показывает мне содержимоеdoc2.pdf
, Так почему бы не использовать Sumatra PDF, тогда вы спросите? Мне бы очень хотелось - однако, проблема в том, что я работаю над проектом с потенциально большим количеством конечных пользователей, и я не могу предположить, что все они используют другой PDF-ридер, чем Adobe Reader X - поэтому другого пути нет чтобы понять, что происходит с Adobe Reader X.
Поэтому, чтобы попасть туда, я начал копать.
Во-первых, глядя на адресную строку в Chrome, мы видим, что Adobe Reader X пытается разрешить, doc2.pdf
используя file
схему URI: file:///C:/superuser/doc2.pdf
- мне это кажется справедливым (вставка того же URI в Run
диалоговое окно в Windows 7 вызывает мое средство чтения PDF по умолчанию (Sumatra PDF) ), чтобы открыть файл) - но почему Adobe Reader X запрашивает браузер по умолчанию для обработки PDF?
Чтобы ответить на это, я продолжал копать. Открытие doc1.pdf
в notepad ++ показало, что гиперссылка была закодирована с использованием URI
типа действия (см. Стр. 653 и 662 в Adobe Portable Document Format, PDF Reference, версия 1.7, шестое издание - http://wwwimages.adobe.com/www.adobe .com / content / dam / Adobe / en / devnet / pdf / pdfs / pdf_reference_1-7.pdf ):
/Type/Action/S/URI/URI(doc2.pdf)
В справочнике PDF (стр. 662) говорится о URI
типе действия:
Унифицированный идентификатор ресурса (URI) - это строка, которая идентифицирует (разрешает) ресурс в Интернете - обычно это файл, который является местом назначения гипертекстовой ссылки, хотя он также может разрешать запрос или другой объект.
Итак, то, что на первый взгляд выглядело как серьезная ошибка в Adobe Reader X, стало похоже на честную реализацию. По крайней мере, в этот момент я выяснил, почему Adobe Reader X ведет себя так, как он это делает, и у меня возник новый вопрос: как правильно кодировать гиперссылку файла (например, ссылку на doc2.pdf
) так, чтобы полученный PDF создавал Adobe Reader X обрабатывать саму ссылку (вместо того, чтобы просить браузер по умолчанию выполнить свою работу)?
Чтобы ответить на этот вопрос, я еще раз взглянул на спецификацию PDF и нашел тип действия Launch
- об этом типе в ссылке на PDF указано следующее (стр. 659):
Действие запуска запускает приложение или открывает или печатает документ.
Итак, сделав следующее изменение (используя notepad ++):
Замена:
/Type/Action/S/URI/URI(doc2.pdf)
С этим:
/Type/Action/S/Launch/F(doc2.pdf)
... Adobe Reader X затем разрешает ссылку, открывая doc2.pdf
файл в отдельном окне / другом экземпляре Adobe Reader X - снова при условии, что я снял этот Open cross-document links in same window
флажок (ура !!).
А теперь перейдем к актуальному / последнему вопросу, который мне еще не удалось решить - есть ли способ заставить MS Word 2007 (или новее) кодировать относительные файловые гиперссылки (гиперссылка, указывающая, например, на другой файл PDF), используя Тип действия Launch
вместо URI
(оба типа указаны на стр. 653 в формате Adobe Portable Document Format, PDF Reference, версия 1.7, шестое издание - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en /devnet/pdf/pdfs/pdf_reference_1-7.pdf )? Или это единственное решение для реализации какого-либо постпроцессорного приложения, которое может заменить все «неправильные» URI
закодированные файловые гиперссылки на их Launch
эквиваленты?
Я знаю, что это может вызвать много «TLDR» - но если вам удастся попасть сюда, я очень ценю ваш интерес и надеюсь, что вы или кто-то еще можете указать мне в правильном направлении.
Спасибо.