ショートバージョン:
Launch
を使用して、MS Word 2007(またはそれ以降)に相対ファイルハイパーリンク(たとえば、別のPDF file)を指すハイパーリンク)をエンコードさせる方法はありますか? of URI
(Adobe Portable Document Formatの653ページで指定されている両方のタイプ、PDFリファレンス、バージョン1.7、第6版- http://wwwimages.Adobe .com/www.Adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf )?または、すべてを変更できるポストプロセッサを実装する唯一のソリューションです。 「間違った」URI
エンコードされたファイルのハイパーリンクはLaunch
に相当しますか?精巧なバージョン:
私は2つのWord文書を持っています。 doc1.docx
およびdoc2.docx
(どちらもMS Word 2007でコンパイルされています)。
doc1.docx
に、2番目のドキュメントのPDFバージョン(doc2.pdf
)へのハイパーリンクを配置します。
次に、doc1.docx
ファイルを.docx
と.pdf
の両方として保存します。PDF
の生成は、次のオプションを使用してMS Word2007の組み込みPDFパブリッシャーによって処理されます。 :
これまでのところ良いです-私は次のフォルダ構造を持っています:
/superuser
- doc1.docx
- doc1.pdf
- doc2.docx
- doc2.pdf
次に、Adobe Reader X(バージョン10.1.3)でdoc1.pdf
を開き、doc2.pdf
を指すハイパーリンクをクリックします。リンクは相対的であるため、Adobe ReaderXはターゲットPDFファイルを別のウィンドウまたはAdobeReader Xの同じインスタンス(オプションに応じて)で開くだけであると推測/想定しました。 Open cross-document links in same window
で指定:Edit -> Preferences -> Documents
)。
ただし、それはnotの場合です。代わりに、Adobe Reader Xはデフォルトのブラウザ(私の場合はGoogle Chrome Windows 7x64のv21 +)を使用してハイパーリンクを解決します)-明確にするために-これは問題。AdobeReader X(およびその前身のほとんど)が、Adobe ReaderXの別のインスタンスでターゲットPDFを開くことにより、ハイパーリンクを解決するだけです。 (Open cross-document links in same window
オプションのチェックを外したと仮定します。)my(デフォルト)PDFリーダー; Sumatra PDFは期待どおりに機能します- Sumatra PDFターゲットPDFファイルを別のウィンドウで開き、doc2.pdf
の内容を表示します。Sumatraを使用しないのはなぜですかPDFそれならあなたは尋ねますか?私はしたかったのですが-しかし、問題は私が潜在的に多くのエンドユーザーがいるプロジェクトに取り組んでいることであり、それらすべてが別のPDF Adobe Reader Xよりもリーダー-したがって、Adobe ReaderXで何が起こっているのかを理解する方法は他にありません。
そこでそこにたどり着くために、私は掘り始めました。
まず、Chromeのアドレスバーを見ると、Adobe ReaderXがfile
URIスキームを使用してdoc2.pdf
を解決しようとしていることがわかります。file:///C:/superuser/doc2.pdf
-これは私には公平に思えます(Windows7のRun
ダイアログに同じURIを貼り付けると、デフォルトのPDFリーダー(Sumatra PDF)ファイルを開くには)-しかし、Adobe Reader XがデフォルトのブラウザにPDFの処理を要求するのはなぜですか?
それに答えるために、私は掘り続けました。 notepad ++でdoc1.pdf
を開くと、ハイパーリンクがURI
アクションタイプを使用してエンコードされていることがわかりました(Adobe Portable Document Formatの653ページと662ページを参照、PDFリファレンス、バージョン1.7、第6版- 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リファレンス(p。662))は、URI
アクションタイプについて次のように述べています。
URL(Uniform Resource Identifier)は、インターネット上のリソース(通常はハイパーテキストリンクの宛先であるファイル)を識別する(解決する)文字列ですが、クエリやその他のエンティティに解決することもできます。
そのため、Adobe Reader Xの主要なバグのように見えたものは、公正な実装のように見え始めました。少なくとも、この時点で、Adobe Reader Xがそのように動作する理由を理解しました-答える新しい質問があります:結果が=になるようにファイルハイパーリンク(たとえば、doc2.pdf
へのリンク)を適切にエンコードするにはどうすればよいですか? PDFはAdobeReader Xにリンク自体を処理させています(デフォルトのブラウザにその仕事をするように頼む代わりに)?
PDF仕様をもう一度調べて、アクションタイプLaunch
を見つけたと答えるために、そのタイプについて、PDFリファレンスは以下(p。659):
起動アクションは、アプリケーションを起動するか、ドキュメントを開くか印刷します。
したがって、次の変更を行うことによって(notepad ++を使用):
交換:
/Type/Action/S/URI/URI(doc2.pdf)
これとともに:
/Type/Action/S/Launch/F(doc2.pdf)
...次に、Adobe Reader Xは、別のウィンドウ/ Adobe ReaderXの別のインスタンスでdoc2.pdf
ファイルを開くことにより、リンクを解決します。これも、Open cross-document links in same window
オプションのチェックを外したと仮定します(やったー!!)。
そして今、私がまだ解決できていない実際の/最後の質問に至るまで-MS Word 2007(またはそれ以降)に相対ファイルハイパーリンク(たとえば、別のPDF file)Launch
の代わりにアクションタイプURI
を使用(Adobe Portable Document Formatの653ページで指定されている両方のタイプ、PDFリファレンス、バージョン1.7、第6版- http://wwwimages.Adobe.com/www.Adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf )または、「間違った」URI
エンコードされたファイルのハイパーリンクをすべてLaunch
に相当するものに変更できる、ある種のポストプロセッサアプリケーションを実装する唯一のソリューションですか?
これが多くの「TLDR」を引き起こす可能性があることは知っていますが、ここにたどり着くことができれば、本当に感謝しています。あなたや他の誰かが私を正しい方向に向けてくれることを願っています。
ありがとう。
素晴らしい記事をありがとうございます。できます!最初は私には向いていませんでしたが、AdobeXで「プロテクトモード」をオフにする必要があることに気付きました。Adobe9ではこの問題はまったく発生していません。業界では機能が後退しているようです。セキュリティの名前。
したがって、Adobe ReaderXでは次のようにします。
/Type/Action/S/URI/URI
と/Type/Action/S/Launch/F(
適切な16進エディタを使用するPDFリーダーだけで、設定のないユーザーがフォルダー内を移動できるようにするという、私たちがやりたいことに対する簡単な解決策はありません。
しかし、あなたのすべての仕事とそれが主題に投げかける光にもう一度感謝します。
FWIW、ファイル名にスペースが含まれている場合、リンクはスマトラでは機能しないと思います(Wordはリンクの作成時に引用符を削除するように見えるため、名前を引用符で囲むことは役に立ちませんでした)。 Wordの動作を変更することは不可能だと思うので...
回避策#1:より良いPDF作成者を使用します。
回避策#2:通常どおりWordでPDFを作成してから、16進エディターまたは http://stahlforce.com/dev/index.php?tool=rep などのコマンドラインユーティリティを使用して置き換えます/ Type/Action/S/URI/URI(with/ Type/Action/S /の必要なすべてのインスタンスLaunch/F(。
私はこれを自分にとって合理的に可能な限り底を打ちました。元の質問に直接関係しているので、最後の要約を渡します。
[ハイパーリンクの挿入]ボックスの下部に表示されているパスを確認します。最上位のフォルダが選択したフォルダである場合、リンクはそのフォルダに関連しています。絶対にするには、[挿入]ボックスのツリー構造を使用して、ドライブ文字までドリルアップします。デフォルトは、ファイルが最初に「親」フォルダに保存されたときの相対リンクです。
(サブフォルダー内のファイルにリンクする「インデックス」ドキュメントを使用。)
転送するフォルダ(「親」フォルダ)をどこかに新しいフォルダを作成します。
サブフォルダとそのファイルを作成するか、親に配置します。
次に、「インデックスドキュメント」となるWord2007ドキュメントを開きます。リンクを挿入する前に、このファイルを「親」に保存してください。
次に、「ハイパーリンクを挿入」を実行します。 「ハイパーリンクの挿入」ボックスには、フォルダ/ファイルツリー構造が「親」から下に表示されます。つまり、相対です。絶対リンクを作成するには、ドライブ文字まで上向きにドリルします。
'インデックスドキュメント'として機能するWordファイルを保存します
'index doc'をpdfに変換するには、Wordファイルを開き、PDFとして保存します。このバージョンのインデックスドキュメントは、ブラウザを介してターゲットファイルを開き、ダウンロードするか、ブラウザ内でPDF)として表示します。
'Index.pdf'ドキュメントをネイティブアプリケーションで開くには、前述の16進編集方法を使用してファイルを変更し、/ Type/Action/S/Launch/Fの代わりに/ Type/Action/S/URI/URI(を使用します。 ((
3.重要な注意! .pdfファイルを変更する前に、すべてのフォルダー名とファイル名にスペースが含まれていないことを確認してください。スペースをアンダースコアまたはダッシュで置き換えます。
MS Officeヘルプには、「保存時にリンクを更新する」(Officeボタン/ Wordオプションボタン/詳細/ Webオプションボタン)を設定すると、ハイパーリンクの挿入が相対的であると記載されています。チェックを外すと、絶対になります。しかし、この設定は私の試みに違いはありませんでした。何をしたかは、ファイルが保存された時点でした。相対リンクを作成するために、新しい空のファイルを開き、リンクを挿入する前に適切なフォルダーに保存しました。 [ハイパーリンクの挿入]ボックスで、[既存のフォルダ]を選択します。ボックスに表示されているフォルダは、上向きではなく下向きに保存されたフォルダです。つまり、相対
絶対リンクを作成するには、新しい空のファイルを開き、保存せずにリンクを挿入します。挿入ボックスに、既存のフォルダが最上位に表示されるようになりました。リンク先のファイルにドリルダウンすると、ボックスの下部に表示されるパスがC:に戻るフルパスになります。 。 。 。 。 ..(ドライブ文字を表示)つまり絶対。
2つのWordファイルのリンクにカーソルを合わせると、どちらの場合も完全な絶対パスが表示されます。ただし、親フォルダーが別のドライブにコピーされている場合、相対リンクは新しいドライブのフォルダーを開き、絶対リンクはC:ドライブフォルダーに戻ります。これは私が見たいものです。 1つのファイルに両方の種類のリンクを作成する方法をまだ発見していません。しかし、とにかくこれは必要ありません。上記の16進編集の変更を使用して、両方のMS WordファイルをPDFに変換することができました。どちらも、一方は絶対モードで、もう一方は相対モードで機能しました。
ある場合にはうまくいきましたが、他の場合にはうまくいきませんでした。ターゲットファイル名にスペースがないことを確認する必要があることがわかりました。それらを下線記号で置き換えました。それから彼らは働いた。