Javascript 警告:字体加载过程中出错:超过最大调用堆栈大小rails上的PDFJS时出错
我正在尝试在我的rails应用程序上使用PDFJS加载pdf。 仅加载图像,而不渲染任何文本 控制台显示: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 //=
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。现在开始工作了。谢谢