2012-11-12 104 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