pdf,25mb大小,单片机阅读器无法读取

时间:2014-05-29 12:32:50

标签: javascript pdf filereader monocle

我刚开始使用单片眼镜阅读器并尝试使用pdf我下载之前它有大约800页和25mb文件大小,现在的问题是单片机返回错误

  

TypeError:无法读取属性' onFirstPageOfBook'为null

     

资源被解释为文档但以MIME类型传输   应用/ PDF

如果我使用1页pdf,它可以正常工作。

这是我的代码:

<script type="text/javascript">

    var bookData = {
        getComponents: function () {
            return [
                'coolresume.pdf',
                'content1.html'
                ];
        },
        getContents: function () {
            return [
                {title: "Chapter 1", src: 'coolresume.pdf'},
                {title: "Chapter 2", src: 'content1.html'}
                ]
        },
        getComponent: function (componentId) {
            return {url:componentId};
        },
        getMetaData: function(key) {
            return {
                title: "Test document",
                creator: "Aron Woost"
                }[key];
        }
    }

    Monocle.Events.listen(
        window,
        'load',
        function () {
            window.reader = Monocle.Reader('reader', bookData);
        }
    );
</script>

the monocle

这是我得到的PDF样本,当相同的PDF转换为EPUB时也适用

PDF URL

1 个答案:

答案 0 :(得分:1)

单片机js可能无法正式支持PDF:https://groups.google.com/forum/#!searchin/monocle-js/pdf/monocle-js/0ue1t243JLg/hgOPIQaramQJ

然而,有些PDF有效,有些则无效。我跟踪那些没有单片机js源代码,3555,3556,3557行:

Monocle.Events.listen(frame, 'load', onDocumentReady);
Monocle.Events.listen(frame, 'load', onDocumentLoad);
frame.contentWindow.location.replace(url);

...使用PDF作为源,url值发送到frame.contentWindow.location.replace函数,但是对于某些PDF,load事件未触发,因此之前附加的函数不执行,脚本停止显示空白页,但其他PDF加载正常。

此外,当我通过theseus调试器运行单片眼镜HTML页面时,失败的PDF也会加载正常。

另一点,单片机js正在将PDF加载到embed标签中。加载独立于单片机js的相同嵌入标签代码加载得很好。那些工作加载2页,都嵌入了相同的PDF网址标签。那些不起作用的只能实现一个embed标签,但不是所有的单片机id都在那里。

可能与文件大小有关。我无法以555K加载PDF,但是412K和更低的加载精细。

这是一个讨厌的黑客攻击,但这会加载PDF,否则不会:

//Monocle.Events.listen(frame, 'load', onDocumentReady);
//Monocle.Events.listen(frame, 'load', onDocumentLoad);
frame.contentWindow.location.replace(url);
onDocumentReady();
onDocumentLoad();