9

Укороченная версия:

  • Можно ли каким-либо образом заставить MS Word 2007 (или новее) кодировать относительные гиперссылки файлов (гиперссылки, указывающие, например, на другой файл PDF), используя Launch типа действия вместо URI (оба типа указаны на стр. 653 переносимого документа Adobe Формат, 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 я размещаю гиперссылку на PDF-версию моего второго документа ( doc2.pdf ) - так что теперь я получил:

Свойства гиперссылки <code> doc2.pdf </code> в <code> doc1.docx </code>

Затем я сохраняю файл doc1.docx как .docx и .pdf - генерация PDF выполняется встроенным издателем PDF в MS Word 2007 с использованием следующих параметров:

MS Word 2007 PDF Publish Свойства

Пока все хорошо - у меня есть следующая структура папок:

/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; 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 Action Type - об этом типе в 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" - но если вам удастся попасть сюда, я очень ценю ваш интерес и надеюсь, что вы или кто-то еще можете указать мне в правильном направлении.

Благодарю.

4 ответа4

2

Спасибо за вашу отличную статью. Оно работает! Сначала не для меня, но потом я обнаружил, что в Adobe X нужно отключить «защищенный режим». У меня нет этой проблемы на Adobe 9. Мне кажется, что индустрия идет в обратном направлении по функциональности во имя безопасности.

Так в Adobe Reader X делаем:

  1. Убедитесь, что открытые перекрестные документы .. не проверены. (как вы сказали)
  2. Отключить защищенный режим: Редактировать »Настройки» Общие
  3. Найдите и замените /Type/Action/S/URI/URI на /Type/Action/S/Launch/F( используя подходящий шестнадцатеричный редактор

Не существует простого решения для того, что мы хотим сделать, - позволить любому пользователю, у которого есть только программа чтения PDF, без каких-либо настроек, перемещаться по папке.
Но еще раз спасибо за всю вашу работу и свет, который она проливает на эту тему.

0

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(.

0

Сейчас я достиг этого, насколько это возможно для меня. Поскольку это касается непосредственно исходного вопроса, я просто передам свое окончательное резюме.

Число рейнольдса абсолютные и относительные ссылки в одном документе

посмотрите на путь, показанный внизу поля Вставить гиперссылку. Если папка верхнего уровня является выбранной вами, то ссылка будет относительной. Чтобы сделать его абсолютным, используйте древовидную структуру в поле «вставка», чтобы развернуть вверх вплоть до буквы диска. По умолчанию это относительные ссылки, когда файл был впервые сохранен в «родительской» папке.

Шаги по созданию переносимой папки для индексирования

(с индексным документом, ссылающимся на файлы в подпапках.)

  1. Создайте новую папку где-нибудь, которая будет папкой для транспортировки (папка «Родитель»).

  2. Сделайте или поместите подпапки с их файлами в родительский.

  3. Теперь откройте документ Word 2007, который будет вашим «индексным документом». Перед вставкой каких-либо ссылок сохраните этот файл на свой «родительский».

  4. Теперь вставьте гиперссылку. Поле «Вставить гиперссылку» будет отображать древовидную структуру папок / файлов вниз от «родительского», то есть относительного. Чтобы получить абсолютную связь, просверлите вверх всю букву до буквы диска.

  5. Сохраните файл Word, который теперь будет работать как «индексный документ».

  6. Чтобы преобразовать 'index doc' в pdf, откройте файл word и сохраните как PDF. Эта версия индексного документа открывает целевые файлы через браузер, либо загружает их, либо отображает в виде PDF в браузере.

  7. Чтобы сделать документ «Index.pdf», откройте ссылки в их собственном приложении, измените файл, используя метод шестнадцатеричного редактирования, описанный ранее, и подставьте / Type / Action / S / URI / URI (для / Type / Action / S / Launch / F (

  8. 3.Важная заметка! Перед изменением файла .pdf убедитесь, что в именах всех папок и файлов нет пробелов. Подстановочные пробелы с подчеркиванием или тире.

0

Число рейнольдса вопрос относительной гиперссылки.

Справка MS Office гласит, что настройка «обновить ссылки при сохранении» (кнопка «Office» / «Параметры Word» / «Дополнительно» / «Кнопка веб-ссылок») приводит к относительной вставке гиперссылок. Если не проверено, они становятся абсолютными. Однако этот параметр не изменил мои попытки. Что и было, была точка, в которой файл был сохранен. Для создания относительных ссылок я открываю новый пустой файл и сохраняю его в соответствующую папку, прежде чем вставлять какие-либо ссылки. В поле «Вставить гиперссылку» выберите «Существующая папка». В этом случае папка, показанная в поле, является папкой, только что сохраненной в дереве внизу, а не вверх. т.е. относительный

Для создания абсолютных ссылок я открываю новый пустой файл и, не сохраняя его, вставляю ссылку. Поле вставки теперь показывает существующую папку на верхнем уровне. Разверните файл, с которым нужно установить связь, и путь, показанный внизу окна, является полным путем к C:. , , , , .. (показывает букву диска) т.е. абсолютный.

При наведении курсора на ссылки в двух файлах Word отображается полный абсолютный путь в обоих случаях. Однако, если папка «Родитель» копируется на другой диск, относительная ссылка открывает папку на новом диске, а абсолютная ссылка возвращается к папке «C: диск», которую я хочу увидеть. Я еще не обнаружил, как сделать оба вида ссылок в одном файле. Но мне это все равно не нужно. Я смог преобразовать оба моих файла MS Word в pdf, используя вышеописанную модификацию hex-редактирования, и они оба работали, один в абсолютном режиме, другой родственник.

Число рейнольдса ваш «метод подмены шестнадцатеричного редактирования»

Это работало хорошо для меня в некоторых случаях, а не в других. Я обнаружил, что должен убедиться, что целевые имена файлов не имеют пробелов в них. Я заменил их символом подчеркивания. Тогда они работали.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .