pdf.js 只适用于某些 pdf 文件吗?

use*_*635 4 javascript pdf jquery pdf.js

我正在尝试使用 .pdf 将 pdf 页面转换为画布pdf.js我使用Render .pdf to single Canvas using pdf.js 和 ImageData by K3N中的答案来实现此目的。该代码可在此处Fiddle1获取。

问题是这似乎只适用于某些 pdf。

例如,代码在Fiddle2中适用于http://arxiv.org/pdf/1207.0102v2.pdf

然而,当我在Fiddle3中尝试使用相同的代码http://infolab.stanford.edu/pub/papers/google.pdf时,它失败了。

为什么会发生这种情况?可以解决吗?

Ion*_*zău 5

它应该适用于所有 pdf 文件,除非它们已损坏。你这里的错误是:

\n\n
\n

XMLHttpRequest cannot load http://infolab.stanford.edu/pub/papers/google.pdf. No \'Access-Control-Allow-Origin\' header is present on the requested resource. Origin \'http://fiddle.jshell.net\' is therefore not allowed access.

\n
\n\n

换句话说,您不能以这种方式加载它,因为http://infolab.stanford.edu/pub/papers/google.pdf 它不允许您这样做。当您将其放在服务器上并使用正确的响应标头加载它时,它很可能会起作用。

\n\n

有关此错误的更多信息,请参阅此处为什么我会看到“Access-Control-Allow-Origin 不允许来源”错误?

\n\n
\n\n

如果您不托管这些文件,则可以通过代理(可以是第三方应用程序或您的服务器)传输它们。例如,Ivan \xc5\xbdu\xc5\xbeak开发了urlreq\xe2\x80\x93a 工具,该工具正是我们在这种情况下需要的。

\n\n

不要使用 pdf 文件的直接链接,而是使用 Ivan 的代理 URL:

\n\n
\n

http://urlreq.appspot.com/req?method=GET&url=http%3A%2F%2Finfolab.stanford.edu%2Fpub%2Fpapers%2Fgoogle.pdf

\n
\n\n

JSFIDDLE

\n