Kısa versiyon:
- Ben MS Word 2007 (veya daha yeni) kodlamak göreli dosya köprüler getirmenin herhangi bir yolu var mı (köprü, işaret, örneğin başka bir PDF dosyası) Eylem Tipi kullanılarak
LaunchyerineURI(sayfa Adobe Portable Document Format 653 üzerinde belirtilen iki tür, PDF Başvurusu, sürüm 1.7, altıncı sürüm - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/tr/devnet/pdf/pdfs/pdf_reference_1-7.pdf )? Yoksa tüm "yanlış"URIkodlanmış dosya köprüleriniLauncheşdeğerlerine çevirebilen bir son işlemci uygulamak için tek çözüm mü?
Ayrıntılı sürüm:
İki Word dokümanım var; doc1.docxve doc2.docx(her ikisi de MS Word 2007 ile derlenmiştir).
Gelen doc1.docxbenim ikinci belgenin (PDF versiyonunda köprü yerleştirmek doc2.pdf) - şimdi ben var:

Daha sonra doc1.docxdosyayı her ikisi olarak da kaydediyorum .docxve .pdf- PDFnesil, aşağıdaki seçenekleri kullanarak MS Word 2007'deki yerleşik PDF yayıncısı tarafından işleniyor:

Şimdiye kadar iyi - Sonra aşağıdaki klasör yapısı var:
/superuser
- doc1.docx
- doc1.pdf
- doc2.docx
- doc2.pdf
Sonra doc1.pdfAdobe Reader X (sürüm 10.1.3) ile açıyorum ve işaret eden köprüyü tıklıyorum doc2.pdf. Bağlantı göreli olarak, Adobe Reader X'in hedef PDF dosyasını ayrı bir pencerede veya Adobe Reader X'in aynı örneğinde açacağını tahmin etmiş / varsaymıştım ( Open cross-document links in same windowiçinde belirtilen seçeneğe bağlı olarak Edit -> Preferences -> Documents).
Ancak durum böyle değil . Bunun yerine, Adobe Reader X, varsayılan tarayıcıyı (benim durumumda Windows 7 x64'te Google Chrome v21 +) kullanarak köprüyü çözer - ve açık olmak gerekirse - bu problemdir . Adobe Reader X'in (ve öncüllerinin çoğunun) hedef PDF'yi Adobe Reader X'in başka bir örneğinde açarak köprüyü çözmesini istiyorum ( Open cross-document links in same windowseçeneğin işaretini kaldırdığımı varsayarak ). Aynı senaryoyu (varsayılan) PDF okuyucumla tekrarlamak; Sumatra PDF beklendiği gibi çalışıyor - Sumatra PDF hedef PDF dosyasını ayrı bir pencerede açar ve bana içeriğini gösterirdoc2.pdf. Öyleyse neden Sumatra PDF'yi kullanmıyorsunuz? Çok isterdim - ancak sorun şu ki, potansiyel olarak çok sayıda son kullanıcısı olan bir proje üzerinde çalışıyorum ve hepsinin Adobe Reader X'tan başka bir PDF okuyucu kullandığını düşünemiyorum - bu yüzden başka bir yol yok Adobe Reader X ile neler olup bittiğini bulmak.
Oraya ulaşmak için kazmaya başladım.
İlk olarak, Chrome'daki adres çubuğuna bakarak Adobe Reader X'in URI şemasını doc2.pdfkullanarak çözmeye çalıştığı görülüyor file: file:///C:/superuser/doc2.pdf- bu bana adil geliyor (aynı URI'yi RunWindows 7'deki iletişim kutusuna yapıştırmak varsayılan PDF okuyucuma neden oluyor (Sumatra PDF) ), ancak Adobe Reader X neden PDF'den işlemek için varsayılan tarayıcıyı istiyor?
Bunu cevaplamak için kazmaya devam ettim. doc1.pdfNotepad ++ ile açıldığında , köprünün URIEylem Türü kullanılarak kodlandığı ortaya çıktı (Adobe Taşınabilir Belge Biçimi, PDF Başvurusu, sürüm 1.7, altıncı sürümdeki s. 653 ve 662'ye bakın - http://wwwimages.adobe.com/www.adobe) .com / content / dam / Adobe / tr / devnet / pdf / pdfs / pdf_reference_1-7.pdf ):
/Type/Action/S/URI/URI(doc2.pdf)
PDF referansı (s. 662), URIEylem Türü hakkında aşağıdakileri belirtir :
Tekdüzen bir kaynak tanımlayıcısı (URI), bir sorguya veya başka bir varlığa da çözümlenebilmesine rağmen, genellikle bir köprü metni bağlantısının hedefi olan bir dosya olan Internet'teki bir kaynağı tanımlayan (çözen) bir dizedir.
Adobe Reader X'te ilk başta büyük bir hata gibi görünen şey adil bir uygulama gibi görünmeye başladı. En azından, bu noktada Adobe Reader X'in neden böyle davrandığını anladım - cevaplamak için yeni bir soruya neden oldum: doc2.pdfsonuçta ortaya çıkan PDF'nin Adobe Reader X'i yapacağı şekilde bir dosya köprüsünü (örneğin bir bağlantı ) nasıl doğru şekilde kodlayabilirim? (varsayılan tarayıcıdan işini yapmasını istemek yerine) bağlantının kendisini mi tutabilirsiniz?
PDF spesifikasyonuna yeniden baktığımı ve Eylem Türü'nü bulduğumu cevaplamak için Launch- bu tür hakkında, PDF referansında şunlar belirtilir (s. 659):
Başlatma eylemi bir uygulamayı başlatır veya bir belge açar veya yazdırır.
Yani aşağıdaki değişikliği yaparak (notepad ++ kullanarak):
Değiştirme:
/Type/Action/S/URI/URI(doc2.pdf)
Bununla:
/Type/Action/S/Launch/F(doc2.pdf)
... Adobe Reader X daha sonra doc2.pdfdosyayı ayrı bir pencerede / Adobe Reader X'in başka bir örneğinde açarak bağlantıyı çözer - yine Open cross-document links in same windowseçeneğin işaretini kaldırdığımı varsayarsak (Yaşasın !!).
Ve şimdi henüz çözmeyi başaramadığım gerçek / son soruya - MS Word 2007'yi (veya daha yeni) göreli dosya köprülerini (örneğin, başka bir PDF dosyasını gösteren) bir köprüyü kodlayabilmemin herhangi bir yolu var mı? İşlem Türü Launchyerine URI(her iki tür de Adobe Taşınabilir Belge Biçimi, PDF Başvurusu, sürüm 1.7, altıncı sürümün 653. sayfasında belirtilmiştir - http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/tr /devnet/pdf/pdfs/pdf_reference_1-7.pdf )? Yoksa tüm "yanlış" URIkodlanmış dosya köprülerini Launcheşdeğerlerine değiştirebilen bir tür post-işlemci uygulaması uygulamak için tek çözüm mü?
Bunun bir sürü "TLDR" ye neden olabileceğini biliyorum - ama buraya gelmeyi başarırsanız ilginizi gerçekten takdir ediyorum ve umarım siz ya da bir başkası beni doğru yöne yönlendirebilir.
Teşekkürler.