Pdf.js: URLフラグメント識別子の「viewrect」パラメータのサポートがありません

作成日 2019年04月28日  ·  7コメント  ·  ソース: mozilla/pdf.js

PDFファイルを開くためのRFC 8118で参照)によると:

viewrect = _left _、_ top _、_ wd _、_ ht_

座標系で浮動小数点値または整数値を使用してビューの長方形を設定します。0,0は、ドキュメントの回転に関係なく、表示されているページの左上隅を表します。

PDF URLフラグメント識別子のviewrectパラメータは現在サポートされていないようです。 確認するために、次のようにテストしました。


構成:

  • Webブラウザとそのバージョン:Firefox Quantum 66.0.3(64ビット)
  • オペレーティングシステムとそのバージョン:GNU / Linux x86_64
  • PDF.jsバージョン: https
  • ブラウザ拡張機能です:いいえ

問題を再現する手順:

  1. リポジトリをチェックアウトし、 npm installgulp serverを実行してから、ページサイズが8.5 "x 11"のPDFにビューアを移動します(例:http:// localhost:8888 / web / viewer。 html?file =%2Ftest%2Fpdfs%2Ftracemonkey.pdf)。
  2. アドレスバーのURLに#page=1&viewrect=72,72,288,432を追加し、ページをリロードします。

期待される動作は何ですか?

閲覧者は、ページの上部から1インチ、左端から1インチオフセットされた(おおよそ)4 "x6"の長方形にズームインする必要があります。

何が悪かったのか?

PDF JSはviewrectサポートしていないため、ビューポートは期待どおりに変換されません


私も走った

$ git grep viewrect

結果は0で、GitHubで次の検索を実行しましたが、どちらも何も返されませんでした。

1-viewer 2-feature

最も参考になるコメント

これに自由に取り組んでください。 wdは「幅」、 htは「高さ」だと思います。

全てのコメント7件

やあ、
私はここで新しく、修正する問題を探しています。誰かがすでに修正していない限り、この問題を修正したいと思います。 また、viewRectに関するドキュメントも読みましたが、wdとhtが何を指しているのかよくわかりません。
誰かがそのwdとhtについて私に教えてもらえますか? 前もって感謝します。

これに自由に取り組んでください。 wdは「幅」、 htは「高さ」だと思います。

こんにちは@AndrewMyint 、私はこれに関連するいくつかの問題を指摘したいと思います。これは、(誤った名前の)「 zoom 」パラメータの現在の実装の誤った動作を文書化しています: https:// github .com / mozilla / pdf.js / issues / 10773およびhttps://github.com/mozilla/pdf.js/issues/2843。

pdf_link_service.jsを調べてきたます。zoom 」パラメータがFit引数を処理しているのに対し、「 view 」で処理する必要があることに驚いています。ドキュメントによるとパラメータ。

@markmatney私が間違っていなければ、 (left, top, scale, Fit, ...)などの引数として提供されたすべての値がBaseViewer.scrollPageIntoViewで使用されています。 また、 scrollPageIntoViewには、いくつかのスイッチケース(Fit, FitB, FitH,......)処理があります。 そして、私が見つけた興味深いケースの1つは、 FitRこれは、ドキュメントにそのFitR引数が表示されていません。

しかし、URLアドレスバーに#zoom=FitR,72,72,288,432を追加すると、「 FitR 」が「 viewrect 」の動作を生成しているように見えます。

それがviewrectの予想される動作であることを確認できますか? ありがとうございました。

はい、 BaseViewer.scrollPageIntoViewはこれらすべての引数を調べ、それらに基づいてビューポートを何らかの方法で変換するメソッドだと思います。

また、最初にこれを調べたときにFitR見たことを思い出します。 これは、 d30fac0 (2011年9月4日)のmasterに、残りのFit*引数とともに導入され、 PDFリファレンス仕様で定義されています。 「PDFファイルを開くためのパラメータ」の仕様から省略された理由(または、さらに言えば、2つの個別の仕様が存在する理由)がわかりません。

とにかく、 viewrectFitRとは異なる方法で実装する必要があるという強い意見があります。 これは確かに議論の余地がありますが、:

  • それらを同じように扱うだけでは冗長になり、このソフトウェアで実行できるユースケースの数が制限されます。
  • PDF仕様はそれぞれのセマンティクスを異なる方法で定義しているため、仕様を遵守しながら、それらを異なる方法で実装することは確かに可能です。

FitRとは異なり、結果のビューがユーザーのWebブラウザーウィンドウのサイズに依存しないviewrect実装を見たいと思います。 私が何を意味するかを確認するには、 https ://mozilla.github.io/pdf.js/web/viewer.html#zoom = FitR、0,0,144,144にください。 そのURLフラグメントは、視聴者に約2 "x 2"の正方形の領域(_w_ x _h_、1 "〜72 px)を表示するように要求します。現在、ブラウザが1080 x 720(3:2の比率)のディスプレイで全画面表示の場合横向きの場合、実際には3 "x 2"の領域が表示されます。ディスプレイを90度回転させ、同じ長方形をフルスクリーンブラウザで表示すると、2 "x3"の領域が表示されます。これはPDFリファレンス仕様の583ページに従って、PDF.JSは残りの使用可能なスペースを埋めます。

[_page_ / FitR _left_ _bottom_ _right_ _top_]

_page_で指定されたページを表示します。その内容は、座標で指定された長方形に収まるように拡大され、ウィンドウ内に完全に収まります[...]必要な水平方向と垂直方向の拡大率が異なる場合は、小さい方を使用します。二つ [...]

「PDFファイルを開くためのパラメータ」は、 viewrectはるかに大まかに定義します(定義については、この問題に関する冒頭のコメントを参照してください)。 ブラウザのウィンドウサイズに関係なく同じ領域を表示する実装が必要です。これにより、指定された領域の_外側_に焦点が合わなくなります(「グレー表示」または「ブラックアウト」)。 私が何かを見逃していない限り、そのような実装はまだ仕様に準拠しています。

私のコメントを読んで、 FitRのPDFjs実装がPDFリファレンス仕様とは異なることに気づきました。 長方形を_x、y、w、h_として解釈しますが、_left、bottom、right、top_として解釈する必要があります。

このページは役に立ちましたか?
0 / 5 - 0 評価