【问题标题】:pdf with 25mb size not readable in monocle reader25mb大小的pdf在单片机阅读器中不可读
【发布时间】:2014-07-24 13:29:43
【问题描述】:

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

TypeError: 无法读取 null 的属性“onFirstPageOfBook”

资源被解释为 Document 但以 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

【问题讨论】:

  • 您能否提供相关 Pfg 的链接。也许它并不完全有效。
  • @mkl 你说的 pfg 是什么意思?
  • 这是一个无辜的错字,mkl 显然是指“PDF”。也就是说:你确定这不是 Monocle 的限制吗?您能否成功阅读其他 PDF、800 页或 >25 MB 或两者兼而有之?
  • @Jongware 是对的。有时看到智能手机打字助手对您的文本做了什么很有趣。
  • @mkl 哦,对不起。 :D,无论如何我还没有尝试使用较小的 pdf,但我想尝试将其转换为 EPUB 格式,但到目前为止我发现的所有转换器都无法转换这样的文件,将尝试找到一些小书 pdf 来尝试,因为我想将其用作在线 pdf 阅读器。

标签: javascript pdf filereader monocle


【解决方案1】:

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

但是,有些 PDF 可以工作,有些则不能。我一直在跟踪那些不归结为 monocle 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 也可以正常加载。

另外一点,monocle js 是在嵌入标签中加载 PDF。独立于 monocle js 加载的相同嵌入标签代码就可以了。而那些工作加载 2 页的,都嵌入了具有相同 PDF url 的标签。那些不起作用的只是实现了一个嵌入标签,但并不是所有的单片眼镜 id 都在那里。

可能与文件大小有关。我无法以 555K 加载 PDF,但 412K 及以下加载正常。

这是一个讨厌的 hack,但这会加载 PDF,否则不会:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 2018-06-16
    • 2010-10-28
    相关资源
    最近更新 更多