【问题标题】:About the resolution of pdf.js in pdfviewer关于pdfviewer中pdf.js的分辨率
【发布时间】:2017-08-07 09:21:40
【问题描述】:

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

<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 设置分辨率以使其像查看器一样。非常感谢。

【问题讨论】:

    标签: javascript pdf pdf.js


    【解决方案1】:

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

     <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>
    

    设置画布宽度和高度的样式为静态值,然后使用getViewport的比例,设置画布的宽度和高度。在这种情况下,上下文的dpi会更好,如果scale越高,dpi的提升就越大。

    【讨论】:

    • 我找到了一个数学方程式来表示它。我认为 canvas.height/canvas.style.height 是 DPI 的质量。而且比例越大,分辨率就越高。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多