Коротка версія:
- Чи можу я зробити так, щоб 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
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; Суматра 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" - але якщо вам вдасться потрапити сюди, я дуже ціную ваш інтерес і сподіваюся, що ви чи хтось інший зможете вказати мене в правильному напрямку.
Дякую.