关于pdfviewer中pdf.js的分辨率

About the resolution of pdf.js in pdfviewer

我是pdfviewer的新手,对于如何通过pdf.js设置上下文的分辨率有一些问题,以下是我的代码片段:

<script type="text/javascript">
PDFJS.getDocument('https://cdn.rawgit.com/mozilla/pdf.js/master/web/compressed.tracemonkey-pldi-09.pdf').then(function (pdf) {
        for (var pageNum = 1; pageNum < pdf.numPages; ++pageNum) {
            pdf.getPage(pageNum).then(function (page) {
                // you can now use *page* here

                var scale = 2;
                var viewport = page.getViewport(scale);

                var canvas = document.createElement('canvas');
                var context = canvas.getContext('2d');
                canvas.height = viewport.height;
                canvas.width = viewport.width;

                var renderContext = {
                    canvasContext: context,
                    viewport: viewport
                };
                page.render(renderContext);

                document.getElementById('pdf-container').appendChild(canvas);
            });
        }
    })

</script>

<form id="form1" runat="server">
    <div>
    </div> 
      <div id="pdf-container"></div>
</form>

主要问题是页面分辨率低,导致内容不干净,不像在视图中 http://mozilla.github.io/pdf.js/web/viewer.html。如何使用 pdf.js 设置分辨率使其像查看器一样。非常感谢。

我找到了一种提高分辨率的方法,但我没有找到一个数学方程式来表示它。

 <script type="text/javascript">
        PDFJS.getDocument('https://cdn.rawgit.com/mozilla/pdf.js/master/web/compressed.tracemonkey-pldi-09.pdf').then(function (pdf) {
            for (var pageNum = 1; pageNum < pdf.numPages; ++pageNum) {
                pdf.getPage(pageNum).then(function (page) {
                    var canvas = document.createElement('canvas');
                    var context = canvas.getContext('2d');
                    canvas.style.height = "1000px";
                    canvas.style.width = "900px";
                    var scale = 2.5;
                    var viewport = page.getViewport(scale);
                    canvas.height = viewport.height;
                    canvas.width = viewport.width;
                    console.log("canvas.height=" + canvas.height);
                    console.log("canvas.width=" + canvas.width);
                    console.log("canvas.style.height=" + canvas.style.height);
                    console.log("canvas.style.width=" + canvas.style.width);
                    console.log("scale="+scale);
                    var renderContext = {
                        canvasContext: context,
                        viewport: viewport
                    };
                    page.render(renderContext);
                    document.getElementById('pdf-container').appendChild(canvas);
                });
            }
        })

    </script>

设置canvas静态值的宽高样式,然后使用getViewport的scale,设置canvas的宽高。在这种情况下,context的dpi会更好,scale越高,dpi的提升就越大。