2016-04-11 28 views
1

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

エラーは、クロムが縮小されたコードを正しく読み取れないことが原因だと誰もが言いました。レールアセットコンプレッサーを選択的に無効にしようとしましたが、失敗しました。

回避策として、私はこのcdnを使用します。 これは公式のCDNかどうかわかりません。

https://npmcdn.com/[email protected]/build/pdf.combined.js 

アップデート:私は縮小さ偽の労働者を使用していない使用していますが、CDN、と私はpdfjsため、他のCDNを見つけることができませんでした。そこで、私はpdf.jsとpdf.worker.jsをAWS S3でホストし、それを自分のCDNとして使用しました。

+0

の修正があります。上記を実行することによって、1)ウェブワーカーを無効にすることができます。スクリプト "ダイアログ)。 2)まだコードを圧縮していない。 – async5

+0

ええ、あなたは正しい@ async5です。だから今私はS3のpdf.jsとpdf.worker.jsを縮小してホストし、それをcdnとして使います。今働いている。ありがとう! –

1

https://github.com/mozilla/pdf.js/issues/7044に記載されているように、これはChromeでUglifiedコードを実行する場合の問題です。回避策があります:オプションを適用するか(sourceを参照)、JS圧縮を無効にします。 (この問題をChromeのバグ追跡システムに報告することもできます)。

+0

新しいバージョンのUglifyには、https://github.com/mishoo/UglifyJS2/issues/1038 – async5

関連する問題