PDFJS:PDF 文本呈现错误
PDFJS: error on Text rendering for the PDF
最近 PDF 渲染得到一个混乱的文本层,其中文本与灰色叠加层重复。
不知道如何修复它,因为当我删除 textLayerFactory: new pdfjsViewer.DefaultTextLayerFactory()
它工作正常。但需要这个,就好像不是渲染为图像,这对于大型文档来说需要很多时间
我正在使用 pdfjsViewer.PDFPageView
我的代码如下
getPdf() {
var pdfDocument;
if ( this._state !== 'inDOM' ) return false;
pdfjsLib.disableRange = true;
pdfjsLib.disableStream = true;
let self = this;
pdfDocument = pdfjsLib.getDocument(this.src);
pdfDocument.promise.then(function(pdf) {
self.set( 'pdfDocument', pdf );
self.set( 'maxNumPages', pdf.numPages );
self.set( 'prevBtnDisabled', true );
self.set( 'documentRendered', true );
self.setViewportWidth();
self.renderPdf();
});
return pdfDocument;
},
renderPdf() {
var pdf = this.pdfDocument,
maxNumPages,
pagePromise;
if ( !pdf ) return false;
maxNumPages = this.maxNumPages;
pagePromise = this.getAndRenderPage( pdf, 1 );
Array.apply( null, new Array( maxNumPages - 1 ) ).forEach( ( value, index ) => {
pagePromise = pagePromise.then( () => this.getAndRenderPage( pdf, index + 2 ) );
} );
},
getAndRenderPage( pdf, index ) {
return pdf.getPage( index ).then( page => this.renderPage( page, index ) );
},
renderPage( pdfPage, pageNum ) {
var parentWidth = this.$().parent().width(),
pageViewportScale = ( parentWidth >= this.get( 'breakpoints.mobile' ) ) ? 1.5 : 1.3,
viewport = pdfPage.getViewport( { scale: parentWidth / pdfPage.getViewport( { scale: pageViewportScale } ).width } ),
container = this.$().find( '.pdf_viewer--container' )[ 0 ],
pdfPageView;
pdfPageView = new pdfjsViewer.PDFPageView( {
container: container,
id: pageNum,
scale: viewport.scale,
defaultViewport: viewport,
textLayerFactory: new pdfjsViewer.DefaultTextLayerFactory()
} );
var pages = this.get('pages');
// Associates the actual page with the view, and drawing it
pages.push( pdfPageView );
this.set( 'pages', pages );
this.set( 'scale', viewport.scale );z
pdfPageView.setPdfPage( pdfPage );
return pdfPageView.draw();
},
我看到过相同类型的问题,而且是 angular
我在这里导入他的图像作为参考,以对问题进行更多解释
报告的问题
PDFJS: Text layer rendering twice
在新的 PDFjs 中,CSS 文件需要从 node_modules 文件夹中单独添加。因此我将其添加为
app.import( 'node_modules/pdfjs-dist/web/pdf_viewer.css' );
您也可以将其添加为 html 导入。
<link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css">
有关 PDFjs 示例的更多信息
https://github.com/mozilla/pdf.js/blob/master/examples/components/pageviewer.html
最近 PDF 渲染得到一个混乱的文本层,其中文本与灰色叠加层重复。
不知道如何修复它,因为当我删除 textLayerFactory: new pdfjsViewer.DefaultTextLayerFactory()
它工作正常。但需要这个,就好像不是渲染为图像,这对于大型文档来说需要很多时间
我正在使用 pdfjsViewer.PDFPageView
我的代码如下
getPdf() {
var pdfDocument;
if ( this._state !== 'inDOM' ) return false;
pdfjsLib.disableRange = true;
pdfjsLib.disableStream = true;
let self = this;
pdfDocument = pdfjsLib.getDocument(this.src);
pdfDocument.promise.then(function(pdf) {
self.set( 'pdfDocument', pdf );
self.set( 'maxNumPages', pdf.numPages );
self.set( 'prevBtnDisabled', true );
self.set( 'documentRendered', true );
self.setViewportWidth();
self.renderPdf();
});
return pdfDocument;
},
renderPdf() {
var pdf = this.pdfDocument,
maxNumPages,
pagePromise;
if ( !pdf ) return false;
maxNumPages = this.maxNumPages;
pagePromise = this.getAndRenderPage( pdf, 1 );
Array.apply( null, new Array( maxNumPages - 1 ) ).forEach( ( value, index ) => {
pagePromise = pagePromise.then( () => this.getAndRenderPage( pdf, index + 2 ) );
} );
},
getAndRenderPage( pdf, index ) {
return pdf.getPage( index ).then( page => this.renderPage( page, index ) );
},
renderPage( pdfPage, pageNum ) {
var parentWidth = this.$().parent().width(),
pageViewportScale = ( parentWidth >= this.get( 'breakpoints.mobile' ) ) ? 1.5 : 1.3,
viewport = pdfPage.getViewport( { scale: parentWidth / pdfPage.getViewport( { scale: pageViewportScale } ).width } ),
container = this.$().find( '.pdf_viewer--container' )[ 0 ],
pdfPageView;
pdfPageView = new pdfjsViewer.PDFPageView( {
container: container,
id: pageNum,
scale: viewport.scale,
defaultViewport: viewport,
textLayerFactory: new pdfjsViewer.DefaultTextLayerFactory()
} );
var pages = this.get('pages');
// Associates the actual page with the view, and drawing it
pages.push( pdfPageView );
this.set( 'pages', pages );
this.set( 'scale', viewport.scale );z
pdfPageView.setPdfPage( pdfPage );
return pdfPageView.draw();
},
我看到过相同类型的问题,而且是 angular 我在这里导入他的图像作为参考,以对问题进行更多解释
报告的问题 PDFJS: Text layer rendering twice
在新的 PDFjs 中,CSS 文件需要从 node_modules 文件夹中单独添加。因此我将其添加为
app.import( 'node_modules/pdfjs-dist/web/pdf_viewer.css' );
您也可以将其添加为 html 导入。
<link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css">
有关 PDFjs 示例的更多信息 https://github.com/mozilla/pdf.js/blob/master/examples/components/pageviewer.html