Javascript 如何使用PDF.js加载web应用程序中包含的文件(而不是从“文件:”URL?
我希望能够在我的Chrome应用程序中使用显示PDF文件,但文档不存在。我找不到任何简单的示例或教程来显示从相对URL加载PDF、显示页面和浏览PDF的代码。它们有非常复杂的示例,其中95%的代码做其他事情,这非常复杂很难解析这些函数并找到相关函数。我想: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
myapp.crx
文件中的PDF文件node make generic
输出到build/generic
目录。此目录包含两个子目录,“build”和“web”。“build”包含“pdf.js”,这是实际的pdf引擎。
“web”包含一个查看器,类似于位于的查看器
chrome.extensi/web/viewer.html?file=path%2Fto%3Ffile.PDF加载PDF文件
localStorage
。如果可用于持久化设置(如滚动位置),则可以使用它,但如果不可用,PDF.js将在没有它的情况下继续工作区域设置中的所有文件来解决此问题,将其放入单个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
文件夹,这就是你的意思吗?另外,如果我想制作自己的自定义查看器,而不使用eviewer.html
,我还需要担心吗?pdf.js
或viewer.js
使用本地化吗?@DonRhummy在build/generic/
中有一个“locale”目录。如果你想使用自己的查看器,只需要pdf.js
。你可以扔掉所有的“web”事情..我看到你来到@SergeyShevchenko,想再检查一下:当我将url传递到PDFDocument
(或者我需要实例化的任何类)时,我像path/to/file.pdf
notpath%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编码