2015-11-06 52 views
0

目前我們有一個應用程序生成PDF並直接在響應對象中加載到一個頁面中。原始文件將從臨時位置刪除,以避免再次訪問PDF。在瀏覽器中顯示PDF只有一次,並從服務器C中刪除它#

 MyFileStream = new FileStream(fileName, FileMode.Open); 
     FileSize = MyFileStream.Length; 

     if (FileSize > 0) 
     { 
      byte[] Buffer = new byte[(int)FileSize]; 
      MyFileStream.Read(Buffer, 0, (int)FileSize); 
      MyFileStream.Close(); 

      // Delete the pdf file 
      File.Delete(fileName); 

      if (Buffer != null) 
      { 
       Response.ClearContent(); 
       Response.ClearHeaders(); 
       Response.ContentType = "application/pdf"; 
       Response.AddHeader("Content-Type", "application/pdf"); 
       Response.AddHeader("Content-Disposition", "inline;filename=" + fileName); 
       Response.BinaryWrite(Buffer); 
       Response.Flush(); 
      } 
     } 
     else 
     { 
      Response.Write("File not found, or file is empty."); 
      Response.Flush(); 
     } 

我想修改的頁面在頁面內的DIV加載PDF,這樣我可以像一個按鈕,在同一頁上添加其他交互式元素觸發別的東西。

只見嵌入PDF的方法是使用類似

<div class="pdf"> 
<object data="myfile.pdf" type="application/pdf" width="100%" height="100%"> 

    <p>It appears you don't have a PDF plugin for this browser. 
    No biggie... you can <a href="myfile.pdf">click here to 
    download the PDF file.</a></p> 

</object> 
</div> 
<div class="buttons"> 
This is where I will have other links or buttons to trigger some functions. 
</div> 

然而,這似乎指向從服務器的靜態PDF資源myfile.pdf。

我的問題:如何確保在此頁面打開後,靜態PDF不可用於直接鏈接?

(類似的地方,一旦網頁被顯示,並傳輸到響應頁面,靜態文件被刪除我的原碼)

+0

什麼阻止你簡單地指向你的實際頁面的URL從數據屬性? –

+0

使用短TTL請求籤名 –

回答

0

你可以寫出來的字節流寫入PDF內容的aspx頁面給請求者。它需要指定輸出類型是application/pdf。例如,如果您有一個名爲getpdf.aspx的頁面,它可以接受pdf_id的參數。然後,您可以使用參數值引用該頁面,並且它會動態加載PDF,而不會寫入服務器文件系統。

然後在你的應用程序頁面,你可以有一個div或iframe與引用getpdf.aspx頁面請求pdf_id

<iframe src="getpdf.aspx?pdf_id=1234" height="100%" width="100%"></iframe> 
0

感謝Gmiley和Eric ...

根據您的指針,我做了更多的研究,並找到了我正在尋找的東西......使用嵌入或免費的圖書館來做我所需要的。

<html> 
<head id="Head1" runat="server"> 
    <title>PDF Documents</title> 
    <script type="text/javascript" src="/Scripts/pdfobject.js"></script> 
    <script type="text/javascript"> 
     window.onload = function() { 
      console.log("Loading ObjectPDF"); 
      var pdf = new PDFObject({ 
       url: "<%= this.ResolveUrl("~/Pages/GetPDF.aspx?PdfFileName=" + pdfFile)%>", 
       id: "pdfRendered", 
       pdfOpenParams: { 
        view: "FitH" 
       } 
      }).embed("pdfRendered"); 
      console.log("finished Embed"); 
      console.dir(pdf); 
     }; 
    </script> 

</head> 
<body> 
    <div id="pdfRendered" style="height: 90%"> 
     <p> 
      It appears you don't have a PDF plugin for this browser. <a href="<%= this.ResolveUrl("~/Pages/GetPDF.aspx?PdfFileName=" + pdfFile)%>">Click here to download the PDF file.</a> 
     </p> 
    </div> 
    <div id="eSign" style="background: #ccc;">SIgnature Trigger here</div> 
</body> 
</html> 
相關問題