如何破坏PDFJS对象?

时间:2014-12-04 06:24:23

标签: javascript jquery pdf jquery-plugins

我需要图书馆的功能,并且我已经使用过:

  • Turn.js ,用于flipbook效果(仅第3个版本正常工作,第4个版本无法使用,如果有人与turn.js的第4个版本具有类似的功能,那么请分享您的代码。)

  • pdf.js ,在客户端将PDF转换为HTML

This是我参考的参考链接。

我已经修改了一个动态使用该脚本的功能,它将PDF的路径添加到该功能中,根据该链接,可以在弹出窗口中打开书籍。

以下是JavaScript函数:

function display_book(path){

    var url = path;
    PDFJS.disableWorker = false;

    PDFJS.getDocument(url).then(function(pdfDoc) {
        numberOfPages = pdfDoc.numPages;
        pdf = pdfDoc;
        $('#book').turn.pages = numberOfPages;

        $('#book').turn({acceleration: false,
            pages: numberOfPages,
            elevation: 50,
            gradients: !$.isTouch,
            // display: 'single',
            when: {
                turning: function(e, page, view) {

                    // Gets the range of pages that the book needs right now
                    var range = $(this).turn('range', page);

                    // Check if each page is within the book
                    for (page = range[0]; page<=range[1]; page++) {
                        addPage(page, $(this));
                        //renderPage(page);
                    };

                },

                turned: function(e, page) {
                    $('#page-number').val(page);

                    if (firstPagesRendered) {
                        var range = $(this).turn('range', page);
                        for (page = range[0]; page<=range[1]; page++) {
                            if (!rendered[page]) {
                                renderPage(page);
                                rendered[page] = true;
                            }
                        };
                    }
                }

            }
        });


        $("button.close").click(function(){
            //code for destroy pdfjs object
            $(".modal").css({"display":"none"});
        });
    });
}

在那个弹出关闭事件中,我想破坏PDFJS的对象(释放内存)。在这段代码中,使用了turn.js第3版本,如果我用第4版本替换该版本,那么代码就无法运行。

1 个答案:

答案 0 :(得分:5)

您只需要在destroy实例上调用pdfDoc即可。

在您的代码示例中,pdfDoc似乎已分配给全局变量pdf。所以,这应该做你想要的:

pdf.destroy();