Javascript 如何使用PDF.js加载web应用程序中包含的文件(而不是从“文件:”URL?

Javascript 如何使用PDF.js加载web应用程序中包含的文件(而不是从“文件:”URL?,javascript,google-chrome,google-chrome-extension,google-chrome-app,pdf.js,Javascript,Google Chrome,Google Chrome Extension,Google Chrome App,Pdf.js,我希望能够在我的Chrome应用程序中使用显示PDF文件,但文档不存在。我找不到任何简单的示例或教程来显示从相对URL加载PDF、显示页面和浏览PDF的代码。它们有非常复杂的示例,其中95%的代码做其他事情,这非常复杂很难解析这些函数并找到相关函数。我想: 在我的应用程序中包含相关代码(这是由“node make generic”创建的“pdf.js”吗?还是我还需要包含其他js文件?) 能够显示我的myapp.crx文件中的PDF文件 pdf.js是否需要“LocalStorage”?是否在C

我希望能够在我的Chrome应用程序中使用显示PDF文件,但文档不存在。我找不到任何简单的示例或教程来显示从相对URL加载PDF、显示页面和浏览PDF的代码。它们有非常复杂的示例,其中95%的代码做其他事情,这非常复杂很难解析这些函数并找到相关函数。我想:

  • 在我的应用程序中包含相关代码(这是由“node make generic”创建的“pdf.js”吗?还是我还需要包含其他js文件?)

  • 能够显示我的
    myapp.crx
    文件中的PDF文件

  • pdf.js是否需要“LocalStorage”?是否在Chrome扩展/应用程序中继续允许使用LocalStorage,或者是否已弃用

  • 有人能告诉我#2是否可行,以及如何找到一些关于要调用的适当类/函数以及要包含/构建的文件的示例代码或文档吗

  • node make generic
    输出到
    build/generic
    目录。此目录包含两个子目录,“build”和“web”。
    “build”包含“pdf.js”,这是实际的pdf引擎。
    “web”包含一个查看器,类似于位于的查看器

  • 将之前的两个目录复制到应用程序后,您应该能够使用
    chrome.extensi/web/viewer.html?file=path%2Fto%3Ffile.PDF加载PDF文件

  • PDF.js不需要
    localStorage
    。如果可用于持久化设置(如滚动位置),则可以使用它,但如果不可用,PDF.js将在没有它的情况下继续工作

  • 但是有一个重要问题:PDF.js使用同步XMLHttpRequest加载本地化文件。这是在Chrome应用程序中。您可以通过序列化
    区域设置中的所有文件来解决此问题,将其放入单个JavaScript文件中,将其加载到viewer.html中,并简化
    l10n.js
    以从我刚才描述的文件

  • node make generic
    输出到
    build/generic
    目录。此目录包含两个子目录,“build”和“web”。
    “build”包含“pdf.js”,这是实际的pdf引擎。
    “web”包含一个查看器,类似于位于的查看器

  • 将之前的两个目录复制到应用程序后,您应该能够使用
    chrome.extensi/web/viewer.html?file=path%2Fto%3Ffile.PDF加载PDF文件

  • PDF.js不需要
    localStorage
    。如果可用于持久化设置(如滚动位置),则可以使用它,但如果不可用,PDF.js将在没有它的情况下继续工作


  • 但是有一个重要问题:PDF.js使用同步XMLHttpRequest加载本地化文件。这是在Chrome应用程序中。您可以通过序列化
    区域设置中的所有文件来解决此问题,将其放入单个JavaScript文件中,将其加载到viewer.html中,并简化
    l10n.js
    以从我刚才描述的文件。

    只是澄清一下:通常,您应该能够通过在CRX的内部目录结构中提供指向该文件的相对或绝对路径来访问烘焙到CRX中的文件,例如:

    'myfiles/pdfs/example.pdf'


    对于PDF.js,我想这就是Rob在上面的答案中“path to file.PDF”的意思,逐字逐句。

    只是为了澄清一下:通常,您应该能够通过在CRX的内部目录结构中提供指向文件的相对或绝对路径来访问烘焙到CRX中的文件,例如:

    'myfiles/pdfs/example.pdf'


    对于PDF.js,我想这就是“path to file.PDF”应该在上面Rob的答案中,一字不差。

    谢谢你的回答。你能说一点关于序列化
    区域设置中的所有文件的意思吗?
    ?从我看到的情况来看,没有
    区域设置
    文件夹。有一个
    l10n
    文件夹,这就是你的意思吗?另外,如果我想制作自己的自定义查看器,而不使用e
    viewer.html
    ,我还需要担心吗?
    pdf.js
    viewer.js
    使用本地化吗?@DonRhummy在
    build/generic/
    中有一个“locale”目录。如果你想使用自己的查看器,只需要
    pdf.js
    。你可以扔掉所有的“web”事情..我看到你来到@SergeyShevchenko,想再检查一下:当我将url传递到
    PDFDocument
    (或者我需要实例化的任何类)时,我像
    path/to/file.pdf
    not
    path%2fto%2ffile.pdf
    一样传递它,对吗?@DonRhummy是的。只有通过查询字符串传递参数时才需要Url编码。找到了参数解析的相关源(如您所见,它是特定于viewer.js的;您说您使用的是自制查看器,因此此评论与您无关。)@DonRhummy感谢您的回复,您可以在Chromium应用程序中获得资源的绝对URL。您能说一点关于序列化
    区域设置
    中的所有文件的意思吗?据我所见,没有
    区域设置
    文件夹。有一个
    l10n
    文件夹,这是您的意思吗?另外,如果我想e我自己的自定义查看器,而不使用
    viewer.html
    ,我还需要担心吗?是
    pdf.js
    使用的本地化还是
    viewer.js
    使用的本地化?@DonRhummy在
    build/generic/
    中有一个“locale”目录。如果你想使用自己的查看器,只需要
    pdf.js
    。你可以扔掉所有的“web”的东西..我看到你对@SergeyShevchenko的回复,想再检查一下:当我把url传递到
    PDFDocument
    (或者我需要实例化的任何类)时,我会像传递
    path/to/file.pdf
    而不是
    path%2fto%2ffile.pdf
    ,对吗?@DonRhummy是的。只有当你传递参数时才需要url编码