MS Word 2007+ - чи може він кодувати гіперпосилання, використовуючи тип дії PDF «Запуск» замість «URI», коли публікує файл «.docx» у PDF?


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.docxI місце гіперпосилання на 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 Properties

Поки що добре - тоді я маю таку структуру папок:

/superuser
    - doc1.docx
    - doc1.pdf
    - doc2.docx
    - doc2.pdf

Потім я відкриваю програму doc1.pdfAdobe 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; Суматра PDF працює як очікується - Суматра PDF відкриває цільовий PDF-файл у окремому вікні та показує мені вмістdoc2.pdf. То чому б не використати PDF-версію Sumatra тоді, коли ви запитаєте? Мені б хотілося, однак, проблема полягає в тому, що я працюю над проектом з потенційно великою кількістю кінцевих користувачів, і не можу припустити, що всі вони використовують інший читач 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 за замовчуванням (Суматра PDF (щоб відкрити файл) - але чому Adobe Reader X запитує браузер за замовчуванням обробляти PDF?

Щоб відповісти на це, я продовжував копати. Відкриття doc1.pdfв блокноті ++ виявило, що гіперпосилання було закодовано за допомогою URIтипу дії (див. Стор. 653 та 662 у форматі портативного документа Adobe, 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):

Дія запуску запускає програму або відкриває або друкує документ.

Отже, вносячи такі зміни (використовуючи блокнот ++):

Заміна:

/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, PDF-посилання, версія 1.7, шосте видання - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/uk /devnet/pdf/pdfs/pdf_reference_1-7.pdf )? Або єдине рішення для реалізації якоїсь програми післяпроцесорної системи, яка може змінити всі «неправильні» URIгіперпосилання кодованого файлу на їх Launchеквівалент?

Я знаю, що це може спричинити багато "TLDR" - але якщо вам вдасться потрапити сюди, я дуже ціную ваш інтерес і сподіваюся, що ви чи хтось інший зможете вказати мене в правильному напрямку.

Дякую.


2
Не впевнений, чи коментарі "стикаються" з питанням, але це варто прочитати.
Таннер Фолкнер

1
Дякуємо за запитання Він сам по собі містить безліч деталей і одне можливе рішення. Чи вдалося вам знайти кращий спосіб зробити це? Заміна дії працює чудово.
Farish

1
@Farish На жаль, ні. Досі використання поштового процесора було рішенням, яке працює для мене. Якщо я якось знайду кращий спосіб, опублікую оновлення тут :)
Lasse Christiansen

Відповіді:


2

Дякую за чудову статтю Це працює! Спочатку не для мене, але потім я виявив, що ви повинні вимкнути "захищений режим" у Adobe X. У мене взагалі немає проблеми на Adobe 9. Мені здається, що галузь рухається назад за функціональністю в назва безпеки.

Отже, в Adobe Reader X робіть:

  1. Переконайтесь, що відкриті перехресні документи .. не встановлені. (як ти сказав)
  2. Вимкніть захищений режим: Редагувати »Налаштування» Загальне
  3. Шукайте та замініть /Type/Action/S/URI/URIза /Type/Action/S/Launch/F(допомогою відповідного шестигранного редактора

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


Я радий, що це працює, використовуючи ідею "поштового процесора". Оскільки я опублікував питання, я все ще не знайшов кращого рішення, тож я продовжуватиму використовувати крок після обробки, поки не буде кращого рішення. Дякуємо за ваш внесок :)
Lasse Christiansen

0

FWIW, я не думаю, що посилання працюють у Суматрі, якщо ім'я файлу містить пробіли (розміщення лапок навколо імені не допомогло, оскільки Word, здається, позбавляє їх при створенні посилання). Я не вірю, що можна змінити поведінку Word, тому ...

Обхід №1: Використовуйте кращий PDF-файл.

Обхід №2: Створіть PDF-файли за допомогою Word, як зазвичай, а потім скористайтеся шестигранним редактором або утилітою командного рядка, наприклад http://stahlforce.com/dev/index.php?tool=rep, щоб замінити всі необхідні екземпляри / Type / Дія / S / URI / URI ( з / Тип / Дія / S / Запуск / F ( .


0

Re. питання відносного гіперпосилання.

Довідка MS Office зазначає, що налаштування "оновлення посилань на збереження" (кнопка Office / кнопка параметрів Word / кнопка розширених функцій / веб-промоції) спричиняє відновлення вставки гіперпосилань. Якщо це не встановлено, вони стають абсолютними. Однак ця настройка не відрізнялася від моїх спроб. Що було, це був момент, коли файл було збережено. Для створення відносних посилань я відкриваю новий порожній файл і зберігаю його у відповідній папці, перш ніж вставляти будь-які посилання. У полі "Вставити гіперпосилання" виберіть "існуючу папку". Папка, показана у вікні, - це папка, щойно збережена в дереві, знижена вниз - не вгору. тобто відносна

Для створення абсолютних посилань я відкриваю новий порожній файл і, не зберігаючи його, вставляю посилання. У вікні вставки тепер відображається наявна папка на верхньому рівні. Перейдіть до файлу, до якого потрібно пов’язати, і шлях, показаний внизу поля, - це повний шлях назад до C :. . . . . .. (показує букву диска), тобто абсолютну.

Наведення курсору на посилання у двох файлах Word показує повний абсолютний шлях в обох випадках. Однак якщо папка Parent скопійована на інший диск, відносне посилання відкриває папку на новому диску, і абсолютна посилання повертається до папки C: drive, яку я те, що я хочу бачити. Я ще не з'ясував, як зробити обидва види посилання в одному файлі. Але мені це все одно не потрібно. Я зміг перетворити обидва мої файли MS Word у pdf, використовуючи вашу шестнадцяткову редагування, і вони обоє працювали, один в абсолютному режимі, інший відносний.

Re. ваш "метод шестигранної редагування"

Для мене це спрацювало чудово в деяких випадках, а не в інших. Я виявив, що я повинен переконатися, що цільові назви файлів не мають пробілів у tham. Я підмінив їх символом підкреслення. Потім вони працювали.


0

Я вирішив про це зараз, наскільки це можливо для себе. Оскільки це стосується безпосередньо початкового питання, я просто передам свій остаточний підсумок.

Re. абсолютні та відносні посилання в одному документі

подивіться на шлях, показаний внизу поля Вставити гіперпосилання. Якщо папка верхнього рівня - обрана вами папка, то посилання буде відносно неї. Щоб зробити його абсолютним, використовуйте структуру дерева у вікні "Вставити", щоб просвердлити вгору до літери диска. За замовчуванням для відносних посилань, коли файл вперше було збережено у папку "батьків".

Кроки до створення транспортабельної папки, що зв'язує індекс

(із документом "індекс", що посилається на файли у підпапках.)

  1. Створіть нову папку десь, де буде папка для транспортування (папка "Батьків").

  2. Створіть або розмістіть підпапки зі своїми файлами у батьківському.

  3. Тепер відкрийте документ Word 2007, який буде вашим "покажчиком документа". Перш ніж вставляти будь-які посилання, збережіть цей файл у своєму 'батьківському'.

  4. Тепер зробіть "вставити гіперпосилання". Поле "Вставити гіперпосилання" відобразить структуру дерева папок / файлів вниз від "батьківського", тобто відносного. Щоб зробити абсолютне посилання, просвердлите вгору аж до літери накопичувача.

  5. Збережіть файл Word, який тепер буде працювати як ваш "індекс-документ"

  6. Щоб перетворити 'index doc' у pdf, відкрийте файл слова та збережіть його як PDF. Ця версія документа Документ відкриє цільові файли через браузер або завантажуючи їх, або відображаючи як PDF у веб-переглядачі.

  7. Щоб зробити документ "Index.pdf", відкрийте посилання в їх рідній програмі, модифікуйте файл, використовуючи описаний раніше шестнадцятковий метод редагування, і підмість / Тип / Дія / S / URI / URI (для / Тип / Дія / S / Запуск / F (

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.