PDFJSを使用してPDFを読み込もうとしています。 イメージのみが読み込まれ、テキストはレンダリングされません。警告:フォント読み込み中にエラーが発生しました:PDFJSのレール上の最大呼び出しスタックサイズを超えました
コンソールは言う:
Warning: Error during font loading: Maximum call stack size exceeded
が変なふうに、それがローカルホスト上とFirefox上で完璧に動作します。 これはlocalhostの任意のブラウザで動作します。エラーは本番サーバーでのみ発生します。
ここは私の設定です。
application.js
//= require compatibility
//= require pdf
//= require pdf_viewer
//= require simpleviewer
simpleviewer.js.erb
$(function(){
'use strict';
if (!PDFJS.PDFViewer || !PDFJS.getDocument) {
alert('Please build the library and components using\n' +
' `node make generic components`');
}
PDFJS.workerSrc = "<%= asset_path('pdf.worker.js') %>";
$('[data-type=pdf]').each(function(){
var pdfUrl =$(this).attr('data-url');
var container = $(this).find('#viewerContainer')[0];
renderPdf(pdfUrl,container)
})
function renderPdf(pdfUrl, container){
var pdfLinkService = new PDFJS.PDFLinkService();
var pdfViewer = new PDFJS.PDFViewer({
container: container,
linkService: pdfLinkService,
});
pdfLinkService.setViewer(pdfViewer);
container.addEventListener('pagesinit', function() {
pdfViewer.currentScaleValue = 'page-width';
});
PDFJS.getDocument(pdfUrl).then(function (pdfDocument) {
pdfViewer.setDocument(pdfDocument);
pdfLinkService.setDocument(pdfDocument, null);
});
}
})
pdf_show.erb
<div class="pdf_show" data-type="pdf" data-url="#{pdf_url}">
<div id="viewerContainer">
<div id="viewer" class="pdfViewer">
</div>
</div>
</div>
感謝します。
の修正があります。上記を実行することによって、1)ウェブワーカーを無効にすることができます。スクリプト "ダイアログ)。 2)まだコードを圧縮していない。 – async5
ええ、あなたは正しい@ async5です。だから今私はS3のpdf.jsとpdf.worker.jsを縮小してホストし、それをcdnとして使います。今働いている。ありがとう! –