2012-11-12 59 views
0

有没有一种方法或服务允许只读(不保存或下载)PDF嵌入到一个域?我知道有Scribd和Slideshare这样的服务,但问题是虽然他们有私人选项,但据我所知,没有服务允许将白名单嵌入(例如,只允许在某些域上嵌入)。Vimeo可以用视频,我也不介意为这项服务付费。有任何想法吗?白名单PDF嵌入

我也研究过PDFJS,看起来他们有一个NodeJS实现,所以我想可能PDFJS可以从服务器端的服务器获取PDF,并将其流式传输到客户端,而不会暴露原始PDF网址。但是我找不到PDFJS的好文档。

任何帮助将不胜感激。

+0

什么是PDF嵌入?请澄清。 – srquinn

+0

只是一种将PDF文档作为内联内容嵌入网站的方法。就像嵌入YouTube或Vimeo一样。 – Yuriy

+0

因此,您只是想将PDF格式化为HTML文档而无需最终用户在本地下载? – srquinn

回答

1

这可以通过任何HTTP服务器来实现,但是由于您在问题中提到了Node,我们将解决该技术的问题。我也假设Express框架。

首先,您只需将PDF作为静态文件托管在服务器上。然后,您将注册一些检测PDF请求的中间件。如果请求的主机名称与“已批准”域名列表不匹配,则会向客户端返回错误。如果该域名获得批准,则可以投放PDF。这与Apache中的.htaccess文件没有什么不同,它限制域/ IP访问或Nginx配置中的“允许”模块。这里是一个快速浏览一下中间件功能...

var approved = []; // Add your approved domains here. 

// Make sure this middleware comes before app.use(express.static) 
app.use(function(req, res, next){ 
    if(req.url == '/path/to/PDF') { 
     if(approved.indexOf(req.headers.host) { 
      next(); 
     } else { 
      next(new Error('Nu uh uh!')); 
     } 
    } else { 
     next(); 
    } 
}); 

这样即使复制嵌入代码,他们将获得来自服务器的错误(也许应该是403,但这些都是语义可以自己决定)

+0

感谢您的提示,这可以工作。 – Yuriy