PDF.JS如何使pdf-js查看器画布响应?

cAM*_*MPy 4 twitter-bootstrap typescript pdfjs

我必须在我的页面上使用PDFJS库显示PDF.问题在于,因为我将比例作为固定数量的画布给出,其中呈现的PDF不响应并且不适合引导网格列宽度.这是HTML代码:

<div class="row">
   <div class="col-md-1" style="padding-right: 15px;">
     <input type="button" ng-click="openPreviousPage()"/>
   </div>
   <div class="col-md-8">
     <canvas id="the-canvas" style="border: 1px solid black;"></canvas>
    </div>
    <div class="col-md-1 col-md-offset-2" style="padding-right:15px;">
      <input type="button" ng-click="openNextPage()" />
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

和我在控制器中的Typescript:

 openPage = (pdf: PDFDocumentProxy, pageNumber: number) => {
        pdf.getPage(pageNumber).then(function getPage(page) {
            var scale = 1;
            var viewport = page.getViewport(scale);

            var canvas = <HTMLCanvasElement>document.getElementById('the-canvas');
            var context = canvas.getContext('2d');
            canvas.height = viewport.height;
            canvas.width = viewport.width;


            var renderContext = {
                canvasContext: context,
                viewport: viewport
            };

            //...rest of actions
        });
    }
Run Code Online (Sandbox Code Playgroud)

对任何暗示都会感激不尽.

小智 11

你可以把一个id画布容器div,并设置基于规模div.clientWidthviweport.width.

在您的HTML代码上:

<div class="row">
  <div class="col-md-1" style="padding-right: 15px;">
    <input type="button" ng-click="openPreviousPage()"/>
  </div>
  <div class="col-md-8" id="the-container">
    <canvas id="the-canvas" style="border: 1px solid black;"></canvas>
  </div>
  <div class="col-md-1 col-md-offset-2" style="padding-right:15px;">
    <input type="button" ng-click="openNextPage()" />
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

然后在控制器上:

openPage = (pdf: PDFDocumentProxy, pageNumber: number) => {
    pdf.getPage(pageNumber).then(function getPage(page) {
        var container = document.getElementById('the-container');
        var canvas = <HTMLCanvasElement>document.getElementById('the-canvas');
        var context = canvas.getContext('2d');

        var viewport = page.getViewport(1);
        var scale = container.clientWidth / viewport.width;
        viewport = page.getViewport(scale);

        canvas.height = viewport.height;
        canvas.width = viewport.width;


        var renderContext = {
            canvasContext: context,
            viewport: viewport
        };

        //...rest of actions
    });
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助...

  • 在2.1.266及更高版本中,使用page.getViewport({scale: 1})和page.getViewport({scale:scale}) (3认同)