質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

3297閲覧

PDF.jsを使用してPDFをスライドショーのように表示したい

asr1919

総合スコア16

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

2クリップ

投稿2019/01/31 03:13

編集2019/01/31 09:16

前提

環境
ASP.NETMVC
VisualStudio2015
c#
PDF.js v2.0.943

ブラウザ
IE11
chrome

以上の環境でWEBシステムを作成しています。

実現したいこと

あるページに、サーバー上にあるPDFを表示させたい。そのときに、
「次へ」「戻る」ボタンとPDFの「現在ページ値」「総ページ値」配置してスライドショーのようにしたい。

試したこと

・色々ネットで調べたところ、PDF.jsが使えそうか試してみる。
・VisualStudioのNuGetパッケージマネージャーから、PDF.js v2.0.943をScriptsフォルダにインストール。
PDF.jsフォルダとファイルが追加。
・まずはhttps://mozilla.github.io/pdf.js/examples/ の「Previous/Next example」を参考に、
表示したいcshtml(view/test/index.cshtml)に以下のように追加しました。

html

1<script src="/Scripts/pdf.js/build/pdf.js"></script> 2 3<h1>PDF.js Previous/Next example</h1> 4 5<div> 6 <button id="prev">Previous</button> 7 <button id="next">Next</button> 8 &nbsp; &nbsp; 9 <span>Page: <span id="page_num"></span> / <span id="page_count"></span></span> 10</div> 11 12<canvas id="the-canvas"></canvas>

javascript

1 2<script> 3 // If absolute URL from the remote server is provided, configure the CORS 4 // header on that server. 5 var url = 'https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf'; 6 7 // Loaded via <script> tag, create shortcut to access PDF.js exports. 8 var pdfjsLib = window['pdfjs-dist/build/pdf']; 9 10 // The workerSrc property shall be specified. 11 pdfjsLib.GlobalWorkerOptions.workerSrc = '/Scripts/pdf.js/build/pdf.worker.js'; 12 13 var pdfDoc = null, 14 pageNum = 1, 15 pageRendering = false, 16 pageNumPending = null, 17 scale = 0.8, 18 canvas = document.getElementById('the-canvas'), 19 ctx = canvas.getContext('2d'); 20 21以下省略 22 23</script>

発生している問題

上記を追加したcshtmlを表示したところ、

0x800a138f - JavaScript 実行時エラー: 未定義または NULL 参照のプロパティ 'GlobalWorkerOptions' は取得できません

が表示されてしまいました。エラーが起きたところは、

pdfjsLib.GlobalWorkerOptions.workerSrc = '/Scripts/pdf.js/build/pdf.worker.js';

ここになります。

教えていただきたいこと

・「発生している問題」で記述した内容を解決したいです。なにか足りないファイルがある、
必要な作業がありそうなのですがそれが分かりません。

ちなみに、/Scripts/pdf.js/ の直下に新規でtest.htmlを作成して「試したこと」で記述した内容をそのまま使ったところ、
エラーは起きませんでしたが、PDFの内容は表示されず(canvasタグ)真っ白になってしまいましたが、
ボタンの「Previous」「Next」と現在ページ値」「総ページ値」は表示され、「Next」を押すとカウントアップしました。

よろしくお願いします。

x_x👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/01/31 09:12 編集

ASP.NET には直接の関係はない PDF.js と JavaScript, HTML の話のように思えますが、であれば ASP.NET のタグは外していただくようお願いします。C# も MVC も関係なさそうです。
wwbQzhMkhhgEmhU

2019/02/01 17:32

blazerみたいなのもありますし、環境はなるべく細かく書いてくれた方が嬉しいです。 読み飛ばせばいいだけですしね。
wwbQzhMkhhgEmhU

2019/02/01 18:00

/Scripts/pdf.js/build/pdf.jsはちゃんと読めてますか? ブラウザの開発用ツールで確認してください。
asr1919

2019/02/06 07:55

wwbQzhMkhhgEmhUさん 返信送れて申し訳ございません。 ブラウザでF12キーから、/Scripts/pdf.js/build/pdf.jsをコピーして、 新規タブで貼り付けた(http://localhost/Scripts/pdf.js/build/pdf.worker.js)ところ、 表示されたので読めていると思います。
wwbQzhMkhhgEmhU

2019/02/07 14:05

エラーが起きたところを実行したときに、/Scripts/pdf.js/build/pdf.jsが読まれているかどうかです。 デバッガで止めて確認してください。あなたが言っていることだけでは、分かりません。
wwbQzhMkhhgEmhU

2019/02/07 17:39

ちょっと今古いPCを借りたLiveUSBのLinuxしかないので、あんまり確認できないのですが、.net core 2.2上で動かしてみました。この環境だからか分かりませんが、dotnet add packageでpdfjsの2.0.943を入れても、実ファイルベースでは何も入りませんでした。仕方なく、nugetパッケージファイルをそのまま展開して、Content/Scriptsをwwwrootの下に手でコピーして、インストール完了としました。 exampleの実装を入れる際は、cshtmlにそのままscript要素で埋め込み、適宜pdfやjsのパスをローカルサーバに書き換えた(pdfは自分で用意)ところ、読み込めることまでは確認しました。当然先にpdf.jsが読まれるように書いています。 ただviewportの取得時、scaleの渡し方が合っていなくて、表示はできていませんでした。 {scale:scale}のようになっているところを、ただのscaleにすれば表示もできるようです。 なお、linuxなので、.netではなく、.net coreで、ブラウザもIEではなく、firefoxです。 以上、情報まで。
guest

回答1

0

自己解決

とりあえず、かなり時間を置きましたが、
https://mozilla.github.io/pdf.js/examples/

「Previous/Next example」
をそのままコピペしたらいけました。

PDF.jsはCDNの参照でいけましたが、自分で作成して参照させてもいけると思います。

個人的な注意点としては、jquery等を複数のライブラリを使用していたため、
PDF.jsの配置を間違えるとエラーが起きたりしたので、
読み込む順番に気を付けたほうがいいかもしれません。

投稿2019/06/13 01:43

asr1919

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問