2011-09-08 46 views
0

我在網頁上顯示PDF。該網頁是一個彈出窗口。代碼是:在網頁上顯示時禁用PDF菜單選項

 string filePath = @"C:\TempPDF\Sample.PDF"; 

     bytes = rv.ServerReport.Render("PDF", null, out mimeType, out encoding, 
      out extension, out streamIds, out warnings); 

     FileStream fileStream = new FileStream(filePath, FileMode.Create); 

     fileStream.Write(bytes, 0, bytes.Length); 

     fileStream.Close(); 

     File.Delete(filePath); 

     Response.ClearContent(); 

     // write file to browser 
     Response.BinaryWrite(bytes); 
     Response.Flush(); 

這一切工作正常。 由於業務需求,並進行詐騙的原因,用戶必須:

  • 只能打印一次(然後窗口應該關閉本身如果可能的話)
  • 不允許用戶保存PDF

我到處搜索了一下,看起來你不能做任何事情,比如禁用保存按鈕,但只是想我會在這裏看看有沒有人遇到過這個,並設法找到解決方案? 謝謝!

回答

0

壞消息

當「視圖」在瀏覽器中的PDF,你已經「保存」到您的計算機。如果你把它和網絡上的其他東西(網頁,圖像等)相比較,那麼它確實很有意義。因此,禁用「保存」將是禁用「下載」在第一個地方,這是不是你想要的。

相同的想法對於打印是正確的。你能將圖像打印一次嗎? (其實是的,見下文)另一個問題是,是否打印了某個文檔級別的問題,並且首先要由PDF查看器的實現者來執行。由於這不是PDF規範的一部分,所以對此沒有任何興趣。而且,「一次打印」意味着什麼呢?我只能按一次打印按鈕?我可以打印一次並選擇500份?由於打印被卸載到打印驅動程序/操作系統,這個「安全信息」也需要傳遞。一旦打印出來,我顯然可以掃描並重新打印它。事實上,我可以打印到PDF/PostScript,並且無論如何都可以獲得原始的無擔保版本。

在Adobe Acrobat中,有一些安全設置可能看起來是個不錯的主意,但它們也不會讓你太過分。如果您在Acrobat中打開PDF並轉到高級,安全,使用密碼進行加密,則至少可以使用密碼禁用對PDF的更改。一個有趣的事情是,如果禁用更改,它實際上會禁用Adobe Reader/Acrobat中的保存按鈕。相反,它迫使你保存,但我看到很多人「認爲」保存被禁用。對於打印而言,不幸的是,您無法將其鎖定。

好消息

對不起捅了一堆孔在您的要求。聽起來很像優惠券公司在他們只希望你能夠打印一次的地方做的事情。我會盡力模仿他們的工作。或者甚至可能更好,谷歌日曆過去做類似的事情(雖然似乎不再做)。谷歌過去向你展示一個文檔的「打印預覽」(只是一個JPG文件),當你點擊打印時,它會使用IFRAME,AJAX或OBJECT將異步資源加載到隱藏的容器中,然後打印出來。 Here's a post that talks more about that。通過這條路線,您可以使用常規編程邏輯在打印後禁用自己的HTML打印按鈕。當然,如果有人點擊了打印,但是取消了打印對話框,那麼他們運氣不好。

您可以做的另一件事是將一些參數傳遞給PDF以在顯示PDF時禁用內置工具欄。具體而言,您可以發送somefile.pdf?toolbar=0See this document for more information。請注意,這些設置僅適用於Adobe Acrobat/Reader。 Chrome,Safari和其他瀏覽器都有自己的PDF渲染器。

+0

感謝克里斯,很多想到那裏! – MikeL