質問: ### 前提・実現したいこと PDF.jsを用いて、画面にいろんなPDFファイルを表示させています。 ### 発生している問題・エラーメッセージ PDFファイルによって、デフォルトの表示向きが異なるという問題が発生しています。 例えば、 sample1.pdf(width: 552.75, height: 369) sample2.pdf(width: 1031.76, height: 728.4) をPDF.jsで表示させてみると、sample1は、正常に横向きで、 sample2は、縦で表示されてしまいます。 (どちらも設定しているrotate値(回転値)は、0です。) ### 試したこと rotate値を0ではなく、未設定で表示してみたところ、sample1、sample2共に横向きで表示されました。 が、当アプリケーションでは、回転機能を備えていて、 rotate値に+90すると右に90度回転した状態で表示させるような仕組みになっています。 sample2.pdfでrotate値を90に設定し、表示してみたところ、横向きで表示されてしまいます。 おそらく、 sample1.pdfをrotate値0で表示すると、横向き表示され、 sample2.pdfをrotate値0で表示すると、縦向き表示になるので、 それぞれ、 sample1 rotate値90は、縦向き表示。 sample2.rotate値90は、横向き表示になるのだと思います。 sample1もsample2もrotate値0の時は、横向き表示、+90した場合は縦向き表示で表示したいです。 ### 動作環境 chrome55 IE11 edge safari
回答: ファイル自体が、既に回転されたものか否か、の差が原因ではないでしょうか。 例えば、元々縦向きのPDFを、右に90度回転して横向きで保存し直す。。そんな感じのことをした時に、ファイル自体に回転値の情報がつくことがあったと思います。 (PDFファイルを編集したソフトウェアによって変わると思われます) つまり、sample1.pdfは「0」、sample2.pdfは「+90」という「回転値の情報」を持っているのかと・・。 PDF.jsは、rotateを未設定の場合、この「ファイルの回転値の情報」を元に「正しい向き」で表示させてくれる、そして0を指定した場合は「ファイルの回転値の情報」を無視して「0」の向きにするため、sample2.pdfの向きが縦になってしまう・・ということかな、と。 PDFファイルを作り直せるのであれば、この情報をリセットする手段があるかもしれません。 ただ、回転されたPDFファイルがあるたびに、ファイル自体を作り直すのでは、かなり手間がかかります。 なので、ファイルの初期表示の向きは、PDF.jsにお任せ(※お任せしたくなければ、ファイルの回転値を取得して、それをrotateに指定)。 回転時は、ファイルの回転値を取得し、それに右回転なら`+90`とかしていくのが良いのではないかな、と思われます。 PDF.jsのページを扱うあたりで`page.rotate`のようにすれば、ファイル(というかページですが)の回転値を参照できそうでしたよ。 ※現在手元に、動作確認をする環境がないため、上記の提案について未検証です。その点ご了承を。。。