Укороченная версия:
- Можно ли каким-либо образом заставить 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.docxI место гиперссылки на 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» - но если вам удастся попасть сюда, я очень ценю ваш интерес и надеюсь, что вы или кто-то еще можете указать мне в правильном направлении.
Спасибо.