Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 警告:字体加载过程中出错:超过最大调用堆栈大小rails上的PDFJS时出错_Javascript_Ruby On Rails_Google Chrome_Pdf_Pdfjs - Fatal编程技术网

Javascript 警告:字体加载过程中出错:超过最大调用堆栈大小rails上的PDFJS时出错

Javascript 警告:字体加载过程中出错:超过最大调用堆栈大小rails上的PDFJS时出错,javascript,ruby-on-rails,google-chrome,pdf,pdfjs,Javascript,Ruby On Rails,Google Chrome,Pdf,Pdfjs,我正在尝试在我的rails应用程序上使用PDFJS加载pdf。 仅加载图像,而不渲染任何文本 控制台显示: Warning: Error during font loading: Maximum call stack size exceeded 奇怪的是,它在本地主机和Firefox上都能完美地工作。 它适用于本地主机上的任何浏览器。该错误仅出现在生产服务器上 这是我的配置 application.js //= require compatibility //= require pdf //=

我正在尝试在我的rails应用程序上使用PDFJS加载pdf。 仅加载图像,而不渲染任何文本

控制台显示:

Warning: Error during font loading: Maximum call stack size exceeded
奇怪的是,它在本地主机和Firefox上都能完美地工作。 它适用于本地主机上的任何浏览器。该错误仅出现在生产服务器上

这是我的配置

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);
    });
  }
})
$(函数(){
"严格使用",;
如果(!PDFJS.PDFViewer | |!PDFJS.getDocument){
警报('请使用\n'生成库和组件'+
“`node make generic components`”);
}
PDFJS.workerSrc=“”;
$('[data type=pdf]')。每个(函数(){
var pdfUrl=$(this.attr('data-url');
var container=$(this.find('#viewerContainer')[0];
renderPdf(pdfUrl,集装箱)
})
函数renderPdf(pdfUrl,容器){
var pdfLinkService=new PDFJS.pdfLinkService();
var pdfViewer=新的PDFJS.pdfViewer({
货柜:货柜,,
linkService:pdfLinkService,
});
pdfLinkService.setViewer(pdfViewer);
container.addEventListener('pagesini',function(){
pdfViewer.currentScaleValue='页面宽度';
});
getDocument(pdfUrl).then(函数(pdfDocument){
pdfViewer.setDocument(PDF文档);
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>


非常感谢。

如中所述,这是Chrome运行丑陋代码的问题。您可以使用一种变通方法:应用
{compress:{sequences:false}
选项(请参阅)或禁用JS压缩。(您也可以向Chrome bug跟踪系统报告问题)。

如中所述,这是Chrome运行丑陋代码的问题。您可以使用一种变通方法:应用
{compress:{sequences:false}
选项(请参阅)或禁用JS压缩。(您也可以向Chrome bug跟踪系统报告该问题)。

每个人都提到该错误是由于Chrome无法正确读取缩小的代码造成的。我试图有选择地禁用rails资产压缩程序,但失败了

因此,对于解决方法,我使用这个cdn。 我不知道这是否是一个官方的CDN虽然

https://npmcdn.com/pdfjs-dist@1.4.79/build/pdf.combined.js

更新:我使用的cdn使用的是假的worker,没有缩小,我找不到任何其他用于pdfjs的cdn。因此,我在AWS S3上托管了缩小的pdf.js和pdf.worker.js,并将其用作我自己的cdn

每个人都提到,该错误是由于chrome无法正确读取缩小的代码造成的。我试图有选择地禁用rails资产压缩程序,但失败了

因此,对于解决方法,我使用这个cdn。 我不知道这是否是一个官方的CDN虽然

https://npmcdn.com/pdfjs-dist@1.4.79/build/pdf.combined.js

更新:我使用的cdn使用的是假的worker,没有缩小,我找不到任何其他用于pdfjs的cdn。因此,我在AWS S3上托管了缩小的pdf.js和pdf.worker.js,并将其用作我自己的cdn

新版本的Uglify将对此进行修复,通过执行上述操作,新版本的Uglify将对此进行修复:1)禁用web worker(这意味着浏览器可能会抛出“长时间运行的脚本”对话框);2) 仍然没有压缩代码。是的,你是对的@async5。所以现在我在S3上托管缩小的pdf.js和pdf.worker.js,并将其用作cdn。现在开始工作了。谢谢通过执行上述操作,您可以:1)禁用web worker(这意味着浏览器可能会抛出“长时间运行的脚本”对话框);2) 仍然没有压缩代码。是的,你是对的@async5。所以现在我在S3上托管缩小的pdf.js和pdf.worker.js,并将其用作cdn。现在开始工作了。谢谢