警告:字体加载期间出错:rails 上的 PDFJS 超出最大调用堆栈大小错误
Warning: Error during font loading: Maximum call stack size exceeded error with PDFJS on rails
我正在尝试在我的 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);
});
}
})
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>
非常感谢。
如 https://github.com/mozilla/pdf.js/issues/7044, it is an issue with Chrome running Uglified code. There is a workaround you can use: apply {compress: {sequences: false}}
options (see source 所述)或禁用 JS 压缩。 (您也可以将问题报告给 Chrome 错误跟踪系统)。
每个人都提到错误是由于chrome无法正确读取缩小代码。我试图有选择地禁用 rails 资产压缩器但失败了。
因此,为了解决这个问题,我使用了这个 cdn。
不过我不知道这是否是官方 CDN。
https://npmcdn.com/pdfjs-dist@1.4.79/build/pdf.combined.js
更新:我使用的 cdn 使用的是 fake worker 而不是缩小,我找不到任何其他 pdfjs 的 cdn。所以我在 AWS S3 上托管了缩小的 pdf.js 和 pdf.worker.js 并将其用作我自己的 cdn。
我正在尝试在我的 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);
});
}
})
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>
非常感谢。
如 https://github.com/mozilla/pdf.js/issues/7044, it is an issue with Chrome running Uglified code. There is a workaround you can use: apply {compress: {sequences: false}}
options (see source 所述)或禁用 JS 压缩。 (您也可以将问题报告给 Chrome 错误跟踪系统)。
每个人都提到错误是由于chrome无法正确读取缩小代码。我试图有选择地禁用 rails 资产压缩器但失败了。
因此,为了解决这个问题,我使用了这个 cdn。 不过我不知道这是否是官方 CDN。
https://npmcdn.com/pdfjs-dist@1.4.79/build/pdf.combined.js
更新:我使用的 cdn 使用的是 fake worker 而不是缩小,我找不到任何其他 pdfjs 的 cdn。所以我在 AWS S3 上托管了缩小的 pdf.js 和 pdf.worker.js 并将其用作我自己的 cdn。