Pdf.js: 如何使pdf.js工作?

创建于 2013-07-24  ·  29评论  ·  资料来源: mozilla/pdf.js

亲爱的大家,

我今天早上才知道pdf.js,这真是太好了。 Pdf的未来。

我想克隆该演示,以便仅在viewer.js中更改源页面。

首先,我手动下载了图像和元素-没有使其正常工作。 然后,我下载了zip文件,并在web&src文件夹中播放了很多内容-但是却找不到位置,因为每次上载它们时都会遇到各种错误。

最终的解决方案是使用WinHTTrack下载与演示页面相关的所有项目,包括locale.properties,现在,我得到以下错误:“ InvalidPDFException”。

有一个人开发了一个简单的演示-我将其上传到我的服务器,它的工作原理很吸引人。 唯一的问题是它是没有预加载器的旧版本,也没有像新版本一样的设计!

http://www.worldwidewhat.net/2011/08/render-pdf-files-with-html5/

任何帮助都非常感谢。

所有29条评论

这是报告错误的地方。 这不是一个支持论坛。
请阅读首页上的自述文件,并查看查看器和示例
http://mozilla.github.io/pdf.js/web/viewer.html
http://jsbin.com/pdfjs-helloworld-v2/edit#html ,实时
http://jsbin.com/pdfjs-prevnext-v2/edit#html ,实时

谢谢本布,
我不知道-我看了所有支持文档都没有用。

您能否建议一个可以提供此类支持的网站?
提前致谢。

您要查找的所有信息都位于首页的自述文件中:
https://github.com/mozilla/pdf.js/blob/master/README.md
查看问题部分。

@AliND @benbro提供的示例应该可以解决问题。 确实,最好下载整个zip或tp克隆存储库。 我可以通过简单地克隆存储库并在本地XAMPP实例上运行它来使其工作。 不要忘记实际的查看器在web/viewer.html文件中,因此访问根文件夹将只显示一个文件夹列表。

您是否正在尝试使其在Web服务器或本地XAMPP / WAMP实例上运行? 如果您继续遇到错误,请发布任何其他信息(来自控制台和操作系统/浏览器的确切错误消息/警告)。 如果您将其上传到Web服务器,则指向查看器的链接也可以帮助您查找任何问题。 如果您确实无法自己解决问题,我们将很乐意为您提供帮助。 :)

@timvandermeij首先,感谢您的@benbro ,但是这些链接并没有帮助我解决问题。

我注意到很多人都遇到同样的问题。 有些解决了,而解决了的人却没有显示步骤! 我相信,就如何使它对初学者起作用而言,编写如此小的指南将非常有用。

@timvandermeij ,由于某些原因,我无法安装XAMPP或任何其他服务器代理。 我刚刚创建了一个免费帐户,您可以使用以下ftp用户详细信息访问该帐户:
主机名:pdfjs.eu.pn
FTP用户名:1​​468147_admin
FTP密码:hello123?

我尝试了三种不同的方法,并且得到了三种不同的pdf警告:

1-我用WinHTTrack下载了所有内容,然后上传了它们,然后出现此错误:
http://pdfjs.eu.pn/pdf.js/web/viewer.html
或“ InvalidPDFException”。 奇怪的是,尽管我不完全正确,却可以使用Safari离线打开(未安装服务器)。

2-我收到此错误(没有警告消息),但页面未显示
http://pdfjs.eu.pn/pdf2.js/web/viewer.html

3-如果上传整个压缩文件夹(所有文件),则会出现此错误:
[在执行此命令时出现的错误]
然后,设计丢失了,它只显示了一些按钮和字段。

非常感谢您的帮助。
等待您的建议-非常感谢
外语

查看http://pdfjs.eu.pn/pdf.js/build/pdf.js ,服务器上的“ GET”已替换为“ GET.html”(可能是镜像程序),例如:

      };

      xhr.open('GET.html', this.url);
      for (var property in this.httpHeaders) {
        var value = this.httpHeaders[property];

一个http://mozilla.github.io/pdf.js/build/pdf.js,它没有“ .html”。 解决问题为无效。

使用git将gh-pages分支与生产代码: git clone -b gh-pages https://github.com/mozilla/pdf.js.git pdfjs-gh-pages

非常感谢@yurydelendik-非常感谢您的投入。

但是,我是php和javascript的新手。

我已经尝试过您的建议(GET),它的确有用。 现在,加载程序显示,但不显示文档。 实际上,当我第一次上载web&src文件夹时,是根据您在以下线程中的提示进行的:
https://github.com/mozilla/pdf.js/issues/2371 (请注意,我在这种情况下遇到的错误是:[在处理此指令时发生错误])

我不认识Yury,但似乎很多初学者都面临同样的问题。 我的意思是,我坚信有一种简单的方法,就像下面的示例(前面提到的)一样,您只需上传文件夹以使其正常工作,这对我以及其他许多人都将非常有帮助。
http://www.worldwidewhat.net/2011/08/render-pdf-files-with-html5/

我不想显得像在喧闹的别人事务中那样,但是在Pdf.js主页上为初学者提供一个非常简短的教程对于您将非常有用。

不管我的问题是否得到解决,我感谢大家的帮助。
所有最好的//
外语

对于初学者来说,很多事情都会出错。 我向初学者推荐的第一件事是遵循问题中提供的README文件,常见问题解答和建议。 您是否可以设置node.js,使用git克隆项目并进行构建? 您是否尝试按照我的建议使用上面的git命令?

在自定义平台上部署pdf.js不在本项目的范围内,但是,我们将很高兴接受来自特定平台的贡献者/专家的详细分步说明(以Wiki页面的形式)。 如果您认为我们遗漏了某些东西,并且知道如何解决常见问题,请创建一个Wiki页面。

@AliND似乎您缺少一些文件。 http://pdfjs.eu.pn/pdf.js/web/viewer.html上的查看器对我来说似乎不错,但控制台声称:

 “找不到NetworkError:404-http://pdfjs.eu.pn/pdf.js/build/compressed.tracemonkey-pldi-09.pdf”

也就是说,该位置不存在PDF文件。 放在那儿,应该没问题。

第二个链接不起作用,因为您缺少以下文件:

 “找不到NetworkError:404-http://pdfjs.eu.pn/pdf2.js/external/webL10n/l10n.js”
 l10n.js
 “找不到NetworkError:404-http://pdfjs.eu.pn/pdf2.js/external/jpgjs/jpg.js”
 jpg.js
 “找不到NetworkError:404-http://pdfjs.eu.pn/pdf2.js/external/webL10n/l10n.js”
 l10n.js
 “找不到NetworkError:404-http://pdfjs.eu.pn/pdf2.js/external/jpgjs/jpg.js”

请检查并确保可以在该路径中找到提到的文件。 据我所知,应该这样做。 提示:使用Firefox控制台( CTRL + Shift + K )查看我上面提到的错误; 他们将帮助您查找任何问题。

@AliND http://pdfjs.eu.pn/pdf.js/web/viewer.html现在部分起作用,因为我将PDF文件添加到了构建目录。 需要这样做的事实可能表明在构建过程中发生了一些麻烦。 我会为您进一步研究,希望能给您更好的反馈。

@AliND您可以在这里: http : //pdfjs.eu.pn/pdf3.js/web/viewer.html

我所做的:

  1. 下载https://github.com/mozilla/pdf.js/archive/master.zip。
  2. 提取它。
  3. 将整个文件夹上载到您的FTP帐户的pdf3.js文件夹中(由于不需要它们,我遗漏了两个大型的测试PDF文件,而免费的FTP服务器遇到了一些麻烦)。

没什么特别的,太奇怪了,它为我工作。 第二个链接肯定缺少某些文件夹,因此这是行不通的。 我不知道为什么第一个链接无法正常工作,但是我认为PDF.js的构建并不完全成功。

尽管这将很好地工作,但我同意最好将其构建而不是仅将其解压缩。 希望您现在可以使用它。 同时,我将尝试自行构建PDF.js并在您的服务器上对其进行测试。 如果可以解决问题,我还将发布步骤,希望所有问题都可以解决,然后:-)

@AliND尽管我承认我必须弄清楚它是如何工作的,但构建的版本也对我https://github.com/mozilla/pdf.js/wiki/Setup-PDF.js-in-a-website-%28Debian-Ubuntu%29#wiki开始-Setup_testing_environnement,但这并不能给我带来很好的结果。 我做了以下工作以使其在您的服务器上正常工作(链接在这里:http://pdfjs.eu.pn/pdf.js-build/web/viewer.html):

  1. 如果您在像我这样的Windows上,请设置正确的行结尾: git config --global core.autocrlf input (在下一步之前,否则第3步将失败!)。
  2. 使用git clone https://github.com/timvandermeij/pdf.js.git从我的分支克隆存储库(但是您应该使用始终最新的https://github.com/mozilla/pdf.js存储库)。
  3. 运行make命令: node make generic
  4. 在那之后,我忽略了https://github.com/mozilla/pdf.js/wiki/Setup-PDF.js-in-a-website-%28Debian-Ubuntu%29#wiki -Setup_testing_environnement的其余部分,因为它对我不起作用。 它没有复制正确的文件。 我要做的是进入第build/generic步创建的buildweb文件夹上载到Web服务器。 做到了。

希望您按照我在此处和之前的评论中提供的步骤解决您的问题。 祝您好运(并为您感到遗憾!)。 :-)

@yurydelendik我还在https://github.com/mozilla/pdf.js/wiki/Setup-PDF.js-in-a-website-%28Debian-Ubuntu%29#wiki -Setup_testing_environnement上找到了手册,这有点令人困惑。 例如,在From build to production中,您将一些文件复制到生产目录中,但是pdf.js本身未复制,导致生产目录中仅包含查看器文件,而不包含核心文件。 我觉得那里缺少步骤。 你能检查一下吗? 如果需要,我还可以使用上述步骤重写Wiki页面,因为对于初学者来说,这将更加清楚(或者我们需要使用更多步骤扩展当前Wiki页面以包含核心文件)。

@timvandermeij ,所以您按照ubuntu的说明在Windows上进行了设置? 是的,您将需要一个特殊的Windows环境来做到这一点(对于初学者来说不容易设置,例如, -视窗)。 是的,Wiki令人困惑,但是对“测试环境”的兴趣已经表明不是初学者。 但是,是的,如果您发现它令人困惑并且找到了正确的方法,请进行更改(但是如果使用Windows,则应另存一个Wiki页面)

在常见问题解答中添加了条目: https :

@yurydelendik谢谢。 实际上,我在Windows上所做的与在Arch Linux上所做的相同,但是我将尝试扩展Wiki。 :)

@yurydelendik我已经扩展了https://github.com/mozilla/pdf.js/wiki/Setup-PDF.js-in-a-website-%28Linux%29上的Linux说明页面,以解决我遇到的问题并纠正一些文字错误。 该页面现在对我来说似乎很好。 今天晚些时候,我将制作相同类型的页面,但重点是Windows(当前是一项待办事项)。 希望增加更多的说明将减少用户之间的混乱。 :)

编辑:这是Windows版本: https :

希望您对Wiki的Linux和Windows页面所做的更改感到满意。 我认为它们现在更容易理解,现在我们也有Windows的文档:)

@timvandermeij感谢您这样做。

@timvandermeij :您所做的非常出色; 谢谢你在那里度过的每一秒钟。 我100%确信这对许多其他人也会有用。 检查正在进行中,我将很快返回结果。

@yurydelendik :非常感谢您的输入,看来Tim已经做到了!

再次感谢,一切顺利//
外语

@ AliND@ yurydelendik很高兴为您提供帮助! 我确实很想听听结果。 :-)

@timvandermeij
令人难以置信的是,所有需要做的就是将pdf文件插入build文件夹!

唯一需要的文件夹是网络! 和构建(仅包含要构建的pdf.js和pdf文件)。 此外,应该在web文件夹中包含locale文件夹(如果我们将文件从github复制到本地服务器,则其中包含locale.properties)。

对于这种非常简单,直接的方法,请致谢@timvandermeij ,以获取有关将pdf文件放置在build文件夹中的@yurydelendik ,以解决GET.html问题。

http://pdfjs.eu.pn/pdffinal/web/viewer.html

但是仍然存在一个问题,它可以在Firefox,Chrome和Opera中完美显示。 但是,对于Explorer和Opera,有两个错误:
Safari:缺少PDF“ sample.pdf”。 但是,加载程序仍然可以正常工作!
资源管理器:只是样式,没有任何内容!

我的意思是,我感觉很奇怪,因为其中存在compatibility.js,我想知道是什么原因导致这些浏览器出现这种现象。 无论如何,我还上传了所有其他文件和文件夹,但没有运气!

@timvandermeij :如果我使用您的方法,并且像以前一样上传整个文件夹,则在以下链接中出现以下错误。 请注意,无论我提取和上传还是上传和提取->同样的问题。 此外,pdf.js-master.zip和mozilla-pdf.js-v0.5.5-1283-gc682c25.zip是相同的文件,因此我想知道为什么一次要两个。

我只是不明白为什么! 我什至下载了您上传的pdf3.js文件夹,然后再次重新上传! 仍然不起作用!

我的意思是,我真正关心的是它无法与其他两个浏览器一起使用的原因!

有任何想法吗?

@timvandermeij我已经安装了GIT并遇到了各种问题。 因此,我宁愿专注于第一个解决方案。 我想知道您是否可以为我提供以下两个问题的答案:
1-我在上一篇文章中发布的链接是否有原因无法在IE&Safari中使用?
2-当您上传主文件夹时,您是否进行了任何修改?

再次感谢-感谢您的帮助以及@yurydelendik的帮助。

最好的,
外语

@timvandermeij @yurydelendik

我可以使用它,谢谢Tim-这次我使用了Safari元素检查器,由于某些原因,它直接指向web / sample.pdf,而不是build / sample.pdf。 Internet Explorer也是如此! 请注意,pdf文件中的内部链接在IE中不起作用,但这不是问题。

毫无疑问,构建方法是正确的,尽管可以为每个pdf文件创建单独的viewer.js。

现在,如果您转到http://pdfjs.eu.pn/pdffinal/web/viewer.html ,它就可以在所有提到的5种浏览器中使用。 (注意:有时候,浏览器在此免费服务器上找不到某些文件,但在付费服务器上找不到文件-它可以正常工作)。

对于将来的用户,一种简单的方法是:
1-克隆http://mozilla.github.io/pdf.js/web/viewer.html (您可以使用HTTrack)。
2-您将拥有两个文件夹:web和build(后者将具有最重要的pdf.js-在这种情况下,HTTrack将所有构建操作合并到此文件中)
2-打开pdf.js(构建文件夹)并将GET.html更改为GET
3-打开viewer.js(Web文件夹)并将pdf文件的名称更改为您自己的名称。
4-将pdf文件放到网络(Safari&IE)和构建文件夹(其他浏览器)中(您可以稍作改动,将pdf.js放到网络文件夹中,这样就不需要包含相同的文件了pdf两次,但这可能需要一些工作!)
5-上传
6-现在应该可以工作了! 请注意,此方法可能存在我不知道的缺陷。

@timvandermeij我只是不明白为什么当我上传主文件夹时它不起作用!,因为在您的情况下,它可以完美地工作!

无论如何,非常感谢您的帮助和支持,根据@yurydelendik@timvandermeij的说明,我会再说一遍,“正确的方法”是一种构建方法。 但由于我是金融研究员-我无法真正深入探讨时间问题。

再次感谢大家-一切顺利//
阿里

@AliND很高兴您能正常工作! 确实,构建方法是最好的方法,但是另一种方法也应该可以正常工作。 除了下载ZIP文件并将其解压缩到服务器之外,我什么也没做。 没有其他修改。 它可以完美地工作,所以奇怪的是它对您不起作用。 但是,最重要的是,您可以根据自己的目的在所有浏览器中使用它。

也感谢您将步骤放在这里。 它可能会帮助仍会在更新的Wiki页面上遇到麻烦的将来的用户。 Wiki页面上描述的方法绝对是可行的方法,并且是一种可行的方法,但是如果由于某种原因它对某人不起作用,则您的步骤可能会有所帮助。

我不知道错误地链接到PDF文件只会破坏Safari和IE,而不会破坏其他浏览器。 我无法确定免费帐户可能存在问题。

很高兴您能正常运行,而且一切顺利! :-)

@AliND另外,请注意,适应viewer.js并不是最好的方法。 您可以使用URL中的file参数加载其他文件,如https://github.com/mozilla/pdf.js/wiki/Setup-PDF.js-in-a-website-%中所述28Linux%29# opening-来自您网站的pdf文件。 这样,您可以使用一个viewer.js文件,并仍然打开所需的所有PDF文件。

@timvandermeij再次非常感谢:)

实际上,您的方法可以在免费服务器上完美运行; 我只是尝试过,但这次我似乎与付费服务器有关! 我刚刚打开了一张支持票,以便他们可以调查问题。

因此,除了构建方法之外,对于将来的用户来说, @ timvandermeij所做的工作也非常完美,并且比前面提到的方法容易得多。 以供参考:
1-只需下载主zip文件,解压缩并上传,或者在控制面板允许的情况下上传并解压缩(第二种方法要快得多)。 当然,有些文件和/或文件夹不是必需的,而只是上传整个文件:D。
2-打开viewer.js(在Web文件夹中)并将pdf文件的名称更改为您自己的名称。 上传(重新上传)此viewer.js
3-将您的pdf文件(具有在步骤2中指定的名称)上载到Web文件夹。
4-完成(如果它不起作用,则说明您的主机存在问题;尝试免费的主机并亲自查看)。

再次感谢蒂姆:)
所有最好的//
阿里

哇,文件方法确实非常有帮助! :)

@timvandermeij,您提供了一站式的完整解决方案:)

再次感谢,一切顺利//
外语

你好
在我的项目中,我需要将pdf页面加载到iframe中,因此我使用了file_get_contents php函数来获取viewer.html的内容。 但是加载pdf时有错误
PDF.js v? (内部版本:?)
讯息:InvalidPDFException
控制台就像下面这样
错误:无效的XRef流头util.js:186
错误的(http://bacchus.weibo.com:8080/js/pdfjs/src/shared/util.js:188:15)
在Object.XRef_readXRef处为readXRef
在Object.XRef_parse处进行解析
在Object.PDFDocument_setup处进行设置
在Object.PDFDocument_parse处进行解析
http://bacchus.weibo.com:8080 / js / pdfjs / src / core / pdf_manager.js:106:26
在LocalPdfManager_ensure中,确保
在LocalPdfManager.BasePdfManager_ensureDoc上作为sureDoc
http://bacchus.weibo.com:8080 / js / pdfjs / src / core / worker.js:54:22
因为我刚接触javascript,所以我不明白为什么会这样,有人可以帮助我吗?

@xiaotun PDF文件似乎已损坏。 请打开一个新期刊,并提供更多详细信息,例如操作系统名称/版本,PDF.js版本和浏览器名称/版本。

我收到警告:TT:未定义的函数:控制台中为32。

无法加载源“ VM_Unknown”:无法检索内容。VM_ Unknown:1
@ types / pdfjs-dist可能是问题,但它在我的角度应用程序中显示为网址中的tgz文件!

pdf会在浏览器中正常显示,但是不存在表单输入!

我尝试按照本教程进行操作:
https://medium.com/factory-mind/angular-pdf-forms-fa72b15c3fbd

此页面是否有帮助?
0 / 5 - 0 等级