Укороченная версия:
- Можно ли каким-либо образом заставить 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» - но если вам удастся попасть сюда, я очень ценю ваш интерес и надеюсь, что вы или кто-то еще можете указать мне в правильном направлении.
Спасибо.
источник
Ответы:
Спасибо за вашу отличную статью. Оно работает! Сначала не для меня, но потом я обнаружил, что в Adobe X нужно отключить «защищенный режим». У меня вообще нет этой проблемы в Adobe 9. Мне кажется, что индустрия идет в обратном направлении по функциональности в имя безопасности.
Итак, в Adobe Reader X сделайте:
/Type/Action/S/URI/URI
с/Type/Action/S/Launch/F(
использованием подходящего шестнадцатеричного редактораНе существует простого решения для того, что мы хотим сделать, - позволить любому пользователю, у которого есть только программа чтения PDF, без каких-либо настроек, перемещаться по папке.
Но еще раз спасибо за всю вашу работу и свет, который она проливает на эту тему.
источник
FWIW, я не думаю, что ссылки работают в Суматре, если имя файла содержит пробелы (размещение кавычек вокруг имени не помогло, так как Word, кажется, лишает их при создании ссылки). Я не верю, что можно изменить поведение Word, так что ...
Обходной путь № 1: Используйте лучший создатель PDF.
Обходной путь № 2. Создайте PDF-файлы с помощью Word, как обычно, затем используйте шестнадцатеричный редактор или утилиту командной строки, например http://stahlforce.com/dev/index.php?tool=rep, чтобы заменить все необходимые экземпляры / Type / Action / S / URI / URI ( с помощью / Type / Action / S / Launch / F ( .
источник
Число рейнольдса вопрос относительной гиперссылки.
В справке MS Office указано, что настройка «обновить ссылки при сохранении» (кнопка «Office» / «Параметры Word» / «Дополнительно» / «Веб-настройки») приводит к тому, что вставка гиперссылок будет относительной. Если не проверено, они становятся абсолютными. Однако этот параметр не изменил мои попытки. То, что сделал, было точкой, в которой файл был сохранен. Для создания относительных ссылок я открываю новый пустой файл и сохраняю его в соответствующую папку, прежде чем вставлять какие-либо ссылки. В поле «Вставить гиперссылку» выберите «Существующая папка». В этом случае папка, показанная в поле, является папкой, только что сохраненной в дереве внизу, а не вверх. т.е. относительный
Для создания абсолютных ссылок я открываю новый пустой файл и, не сохраняя его, вставляю ссылку. Поле вставки теперь показывает существующую папку на верхнем уровне. Разверните файл, с которым нужно установить связь, и путь, показанный внизу окна, является полным путем к C :. , , , , .. (показывает букву диска) т.е. абсолютный.
При наведении курсора на ссылки в двух файлах Word отображается полный абсолютный путь в обоих случаях. Однако, если папка «Родитель» копируется на другой диск, относительная ссылка открывает папку на новом диске, а абсолютная ссылка возвращается к папке «C: диск», которую я хочу увидеть. Я еще не обнаружил, как сделать оба вида ссылок в одном файле. Но мне все равно это не нужно. Я смог преобразовать оба моих файла MS Word в pdf, используя вышеописанную модификацию hex-редактирования, и они оба работали, один в абсолютном режиме, другой родственник.
Число рейнольдса ваш "метод подмены шестнадцатеричного редактирования"
Это работало хорошо для меня в некоторых случаях, а не в других. Я обнаружил, что должен убедиться, что в целевых именах файлов нет пробелов. Я заменил их символом подчеркивания. Тогда они работали.
источник
Сейчас я достиг этого, насколько это возможно для меня. Поскольку это касается непосредственно исходного вопроса, я просто передам свое окончательное резюме.
Число рейнольдса абсолютные и относительные ссылки в одном документе
посмотрите на путь, показанный внизу поля Вставить гиперссылку. Если папка верхнего уровня является выбранной вами, то ссылка будет относительной. Чтобы сделать его абсолютным, используйте древовидную структуру в поле «вставка», чтобы развернуть вверх вплоть до буквы диска. По умолчанию это относительные ссылки, когда файл был впервые сохранен в «родительской» папке.
Шаги по созданию переносимой индексной папки
(с индексным документом, ссылающимся на файлы в подпапках.)
Создайте новую папку, которая будет папкой для транспортировки (папка «Родитель»).
Создайте или поместите подпапки с их файлами в родительский.
Теперь откройте документ Word 2007, который будет вашим «индексным документом». Перед вставкой любых ссылок сохраните этот файл на свой «родительский».
Теперь сделайте «вставить гиперссылку». Поле «Вставить гиперссылку» будет отображать древовидную структуру папок / файлов вниз от «родительского», то есть относительного. Чтобы получить абсолютную связь, просверлите вверх всю букву до буквы диска.
Сохраните файл Word, который теперь будет работать как «индексный документ».
Чтобы преобразовать 'index doc' в pdf, откройте файл word и сохраните как PDF. Эта версия индексного документа открывает целевые файлы через браузер, либо загружает их, либо отображает в виде PDF в браузере.
Чтобы сделать документ «Index.pdf», откройте ссылки в их собственном приложении, измените файл, используя метод шестнадцатеричного редактирования, описанный ранее, и подставьте / Type / Action / S / URI / URI (для / Type / Action / S / Launch / F (
3. Важное примечание! Перед изменением файла .pdf убедитесь, что в именах всех папок и файлов нет пробелов. Подстановочные пробелы с подчеркиванием или тире.
источник