2013-08-28 43 views
0

我展示在一個PDF如下:如何禁用打印選項爲PDF在IFRAME

<iframe src="/itextPdfServlet" height="600px" width="700px"></iframe> 

我想禁用此打印選項。我怎樣才能做到這一點?

我的servlet

protected void doGet(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 
     String fullPath = (String) request.getSession().getAttribute("fullPath"); 
     response.setContentType("application/pdf"); 
     ServletOutputStream out = null; 
     try{ 
      File file = new File(fullPath); 
      FileInputStream fileIn = new FileInputStream(file); 
      out = response.getOutputStream(); 
      Document document = new Document(PageSize.A4); 
      PdfWriter writer = PdfWriter.getInstance(document, out); 
      document.open(); 
      PdfContentByte cb = writer.getDirectContent(); 
      PdfReader reader = new PdfReader(fileIn); 
      PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("fullPath")); 
      stamper.setEncryption("reader_password".getBytes(), "permission_password".getBytes(), 
        ~(PdfWriter.ALLOW_COPY | PdfWriter.ALLOW_PRINTING), PdfWriter.STANDARD_ENCRYPTION_128); 
      stamper.close(); 
      PdfImportedPage page = writer.getImportedPage(reader, 1); 
      document.newPage(); 
      cb.addTemplate(page, 0, 0); 
      document.add(new Paragraph("my timestamp")); 
      response.setHeader("Expires", "0"); 
      response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0"); 
      response.setHeader("Pragma", "public"); 
      document.close(); 

     }catch(Exception e){ 

     } 

    } 

回答

2

治療訪問者或客戶當作敵人可能不是你的最佳利益。生成的文件時,您可以在PDF文件的選項禁用打印:

PdfReader reader = new PdfReader("testpdf.pdf"); 

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("my-pdf-file.pdf")); 

stamper.setEncryption("reader_password".getBytes(), "permission_password".getBytes(), ~(PdfWriter.ALLOW_COPY | PdfWriter.ALLOW_PRINTING), PdfWriter.STANDARD_ENCRYPTION_128); 

stamper.close(); 

但我知道這並不關心這些選項中的至少一個PDF閱讀器。我知道很多可以製作截圖的工具,所以即使您的PDF使我生氣,我也只是打印截圖。有一些屏幕自動化工具甚至可以爲我翻閱文件,爲每個頁面製作一個截圖,一個小腳本將從中編譯一個新的PDF。

您還可以嘗試在Web瀏覽器中禁用JavaScript打印。然後,這會迫使我安裝一個像Tampermonkey或類似的工具,它可以將我的腳本從我的瀏覽器中踢出。

通常情況下,一個更好的方法是在PDF文件中加入水印,說明誰下載/購買了文件,然後騷擾他們,如果PDF文件泄漏。這樣,你不煩人大家

也就是說,考慮一下你的PDF值多少錢以及某人會花多少錢(錢和負面反饋明智)。在大多數情況下,在偉大的服務你的錢投資,您就會獲得更多的錢比你可以通過人印刷PDF文件丟失(他們也將不得不做一些與打印之前它可能會對您的收入,權利的任何影響,.. )

+0

因爲我想禁用打印選項的原因是它有必須由客戶端查看的機密pdf,他們可以查看它,但他們不應該能夠打印 –

+0

我做了這個亞倫,但它仍然顯示打印和下載選項在IFRAME –

+2

這是我的觀點:由於很多人濫用這一功能,瀏覽器和PDF的觀衆有選擇無視PDF文檔/ JavaScript的請求關閉打印或上下文菜單。如果您的PDF是保密的,請打印並通過快遞發送,讓快遞員等待客戶閱讀並讓它在事後恢復。 –