Phiên bản ngắn:
- Có cách nào để tôi có thể làm cho MS Word 2007 (hoặc mới hơn) mã hóa các siêu liên kết tệp tương đối (một siêu liên kết trỏ đến, ví dụ: một tệp PDF khác) bằng cách sử dụng Loại hành động
Launch
thay vìURI
(cả hai loại được chỉ định trên trang 653 của Định dạng tài liệu di động Adobe, Tài liệu tham khảo PDF, phiên bản 1.7, phiên bản thứ sáu - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_Vference_1-7.pdf )? Hoặc là giải pháp duy nhất để thực hiện một bộ xử lý hậu kỳ có thể thay đổi tất cả cácURI
siêu liên kết tệp được mã hóa "sai" thànhLaunch
tương đương của chúng ?
Phiên bản xây dựng:
Tôi có hai tài liệu Word; doc1.docx
và doc2.docx
(cả hai được biên dịch với MS Word 2007).
Trong doc1.docx
Tôi đặt một siêu liên kết đến phiên bản PDF của tài liệu thứ hai của tôi ( doc2.pdf
) - vì vậy bây giờ tôi đã nhận được:
Sau đó tôi lưu doc1.docx
tệp dưới dạng cả hai .docx
và .pdf
- PDF
thế hệ được xử lý bởi nhà xuất bản PDF tích hợp trong MS Word 2007 bằng các tùy chọn sau:
Cho đến nay rất tốt - Tôi có cấu trúc thư mục sau:
/superuser
- doc1.docx
- doc1.pdf
- doc2.docx
- doc2.pdf
Sau đó, tôi mở doc1.pdf
bằng Adobe Reader X (phiên bản 10.1.3) và nhấp vào siêu liên kết trỏ đến doc2.pdf
. Vì liên kết là tương đối nên tôi đã đoán / giả định rằng Adobe Reader X sẽ chỉ mở tệp PDF đích trong một cửa sổ riêng hoặc trong cùng một phiên bản Adobe Reader X (tùy thuộc vào tùy chọn Open cross-document links in same window
được chỉ định trong Edit -> Preferences -> Documents
:).
Tuy nhiên, đó không phải là trường hợp. Thay vào đó, Adobe Reader X giải quyết siêu liên kết bằng trình duyệt mặc định (trong trường hợp của tôi là Google Chrome v21 + trên Windows 7 x64) - và rõ ràng - đây là vấn đề . Tôi muốn Adobe Reader X (và hầu hết các phiên bản trước của nó) chỉ giải quyết siêu liên kết bằng cách mở tệp PDF đích trong một phiên bản khác của Adobe Reader X (giả sử tôi đã bỏ Open cross-document links in same window
chọn tùy chọn này). Lặp lại cùng một kịch bản bằng trình đọc PDF (mặc định) của tôi; Sumatra PDF hoạt động như mong đợi - Sumatra PDF mở tệp PDF đích trong một cửa sổ riêng và hiển thị cho tôi nội dung củadoc2.pdf
. Vậy tại sao không sử dụng Sumatra PDF thì bạn hỏi? Tôi rất thích - tuy nhiên, vấn đề là tôi đang làm việc trong một dự án có nhiều người dùng cuối và tôi không thể cho rằng tất cả họ đều sử dụng trình đọc PDF khác ngoài Adobe Reader X - vì vậy, không có cách nào khác rằng tìm hiểu những gì đang xảy ra với Adobe Reader X.
Vì vậy, để đạt được điều đó, tôi bắt đầu đào.
Đầu tiên, bằng cách nhìn vào thanh địa chỉ trong Chrome, người ta thấy rằng Adobe Reader X cố gắng giải quyết doc2.pdf
bằng cách sử dụng file
lược đồ URI: file:///C:/superuser/doc2.pdf
- có vẻ công bằng với tôi (dán cùng một URI vào Run
hộp thoại trong Windows 7 khiến trình đọc PDF mặc định của tôi (Sumatra PDF ) để mở tệp) - nhưng tại sao Adobe Reader X lại yêu cầu trình duyệt mặc định xử lý PDF?
Để trả lời, tôi tiếp tục đào. Mở doc1.pdf
bằng notepad ++ cho thấy siêu liên kết đã được mã hóa bằng URI
Loại hành động (xem trang 653 và 662 trong Định dạng tài liệu di động Adobe, Tài liệu tham khảo PDF, phiên bản 1.7, phiên bản thứ sáu - http://wwwimages.adobe.com/www.adobe .com / nội dung / đập / Adobe / en / devnet / pdf / pdfs / pdf_Vference_1-7.pdf ):
/Type/Action/S/URI/URI(doc2.pdf)
Tham chiếu PDF (tr. 662) nêu sau đây về URI
Loại hành động:
Mã định danh tài nguyên thống nhất (URI) là một chuỗi xác định (giải quyết) một tài nguyên trên Internet Internet thường là một tệp là đích của một liên kết siêu văn bản, mặc dù nó cũng có thể phân giải thành truy vấn hoặc thực thể khác.
Vì vậy, những gì đầu tiên trông giống như một lỗi lớn trong Adobe Reader X bắt đầu giống như một triển khai công bằng. Ít nhất, tại thời điểm này tôi đã tìm ra lý do tại sao Adobe Reader X hoạt động giống như vậy - dẫn đến một câu hỏi mới để trả lời: làm thế nào để tôi mã hóa đúng một siêu liên kết tệp (ví dụ: một liên kết đến doc2.pdf
) sao cho PDF kết quả tạo ra Adobe Reader X tự xử lý liên kết (thay vì yêu cầu trình duyệt mặc định thực hiện công việc của nó)?
Để trả lời rằng tôi đã xem xét kỹ hơn về đặc tả PDF và tìm thấy Loại hành động Launch
- về loại đó, tham chiếu PDF nêu rõ như sau (tr. 659):
Một hành động khởi chạy sẽ khởi chạy một ứng dụng hoặc mở hoặc in một tài liệu.
Vì vậy, bằng cách thực hiện thay đổi sau (sử dụng notepad ++):
Thay thế:
/Type/Action/S/URI/URI(doc2.pdf)
Với cái này:
/Type/Action/S/Launch/F(doc2.pdf)
... Adobe Reader X sau đó giải quyết liên kết bằng cách mở doc2.pdf
tệp trong một cửa sổ riêng / một phiên bản khác của Adobe Reader X - một lần nữa giả sử tôi đã bỏ Open cross-document links in same window
chọn tùy chọn (hooray !!).
Và bây giờ, đến câu hỏi thực tế / cuối cùng mà tôi chưa giải quyết được - có cách nào tôi có thể khiến MS Word 2007 (hoặc mới hơn) mã hóa các siêu liên kết tệp tương đối (ví dụ: một siêu liên kết trỏ đến, ví dụ: một tệp PDF khác) bằng cách sử dụng Loại hành động Launch
thay vì URI
(cả hai loại được chỉ định trên trang 653 của Định dạng tài liệu di động Adobe, Tài liệu tham khảo PDF, phiên bản 1.7, phiên bản thứ sáu - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en /devnet/pdf/pdfs/pdf_Vference_1-7.pdf )? Hoặc là giải pháp duy nhất để thực hiện một số loại ứng dụng hậu xử lý có thể thay đổi tất cả các URI
siêu liên kết tệp được mã hóa "sai" thành Launch
tương đương của chúng ?
Tôi biết điều này có thể gây ra nhiều "TLDR" - nhưng nếu bạn quản lý để đến đây tôi thực sự đánh giá cao sự quan tâm của bạn và tôi hy vọng rằng bạn hoặc ai đó có thể chỉ cho tôi đi đúng hướng.
Cảm ơn.