none
如何在瀏覽器中開啟pdf檔 RRS feed

  • 問題

  •  

    各位先進好

          我是使用asp.net 2.0,我在點選超連結(網頁A)後會在網址列中傳參數到另一個頁面(網頁B)

    在網頁B去靠參數去取得該商品之pdf檔案的真實路徑(ex: D:\PDFfile\001.pdf),取得此欄位資料後要如何在

    瀏覽器中直接開啟此pdf檔呢......(不希望有儲存檔案的對話框出現)

     

    另外如果在client端沒裝任何pdf瀏覽器,也可以使用網頁開啟嗎......???

     

    先在這感謝各位先進!!謝謝!!

    2007年11月1日 上午 07:16

解答

  • 隨便寫一下:

     

    程式碼區塊
    Response.AddHeader(
         "Content-Disposition",
         string.Format("attachment; filename=001.pdf"));
    Response.HeaderEncoding = System.Text.Encoding.GetEncoding("big5");
    Response.WriteFile("D:\\PDFfile\\001.pdf");
    Response.End();

     

     

    2007年11月1日 上午 08:24
    版主
  • 程式碼區塊

            Response.ContentType = "application/pdf";
            Response.WriteFile("D:\\PDFfile\\001.pdf");

            Response.End();

     

     

     

    應該 D:\\PDFfile\\001.pdf 是在 Server 端沒錯吧...

    header 用 application/pdf 如果 Client 有裝 PDF 瀏覽器應該就可以直接打開了...

     

     

     

    2007年11月1日 上午 08:47
  • 你可以先搜尋看看 Response.WriteFile 網址的討論,有關於檔案網址隱藏的討論:

    http://forums.microsoft.com/MSDN-CHT/Search/Search.aspx?words=Response.WriteFile+%E7%B6%B2%E5%9D%80&searchKey=&lcid=1028&searchscope=forumscope&siteid=14&ForumID=236&ForumGroupID=-1

     

    Server 端能告知瀏覽器跳出視窗來儲存檔案。

     

    但所有權限仍然在 client 端上,除非是透過 ActiveX DLL(IE),否則沒辦法強制 client 用 IE 開 pdf 或不開,比如說不支援崁入 IE 的 pdf Reader 就鐵定另開新視窗,IE 並沒有提供 pdf reader 的能力,所以沒有任何的 pdf Reader 的電腦,就只能存檔。

     

    比如說可以在隔壁TechNet技術討論區看到,如何讓 IE 不要自動開啟 pdf 的討論,如果使用者做了變更,你的檔案就不能在 IE 開啟。

     

    如果你只是想不要讓 PDF 被使用者下載... 有法故有破,目前為止沒有方法,只有增加難度的技巧。

     

    所以線上閱讀的漫畫網頁會用特定軟體來鎖檔案,並且圖檔加密傳輸,網頁先天就有做得到與做不到的,當你的需求超出一般的網頁需求時,你可能要考慮的就是自己寫簡易的網路瀏覽器了。

     

    沒有加密的東西,隨便掛個封包監聽就可以砍下來了,就不用浪費時間了。

    2007年11月1日 上午 09:56
    版主

所有回覆

  • 建議你最好還是請使用者安裝 Acrobat Reader,線上的 PDF Render 有些品質不太好 ...。

     

    2007年11月1日 上午 07:41
    版主
  • 如果先不討論有無pdf瀏覽器

    當已經找到路徑D:\PDFfile\001.pdf時,我怎麼撰寫讓網頁直接開啟此檔案??

    因不想讓使用者看到存放路徑,所以才想用資料庫取出路逕來開啟pdf檔

    但是......我不知道有何方法能夠達成此目的.....感謝兩位先進回答的問題^^

    2007年11月1日 上午 08:20
  • 隨便寫一下:

     

    程式碼區塊
    Response.AddHeader(
         "Content-Disposition",
         string.Format("attachment; filename=001.pdf"));
    Response.HeaderEncoding = System.Text.Encoding.GetEncoding("big5");
    Response.WriteFile("D:\\PDFfile\\001.pdf");
    Response.End();

     

     

    2007年11月1日 上午 08:24
    版主
  • 程式碼區塊

            Response.ContentType = "application/pdf";
            Response.WriteFile("D:\\PDFfile\\001.pdf");

            Response.End();

     

     

     

    應該 D:\\PDFfile\\001.pdf 是在 Server 端沒錯吧...

    header 用 application/pdf 如果 Client 有裝 PDF 瀏覽器應該就可以直接打開了...

     

     

     

    2007年11月1日 上午 08:47
  • 你可以先搜尋看看 Response.WriteFile 網址的討論,有關於檔案網址隱藏的討論:

    http://forums.microsoft.com/MSDN-CHT/Search/Search.aspx?words=Response.WriteFile+%E7%B6%B2%E5%9D%80&searchKey=&lcid=1028&searchscope=forumscope&siteid=14&ForumID=236&ForumGroupID=-1

     

    Server 端能告知瀏覽器跳出視窗來儲存檔案。

     

    但所有權限仍然在 client 端上,除非是透過 ActiveX DLL(IE),否則沒辦法強制 client 用 IE 開 pdf 或不開,比如說不支援崁入 IE 的 pdf Reader 就鐵定另開新視窗,IE 並沒有提供 pdf reader 的能力,所以沒有任何的 pdf Reader 的電腦,就只能存檔。

     

    比如說可以在隔壁TechNet技術討論區看到,如何讓 IE 不要自動開啟 pdf 的討論,如果使用者做了變更,你的檔案就不能在 IE 開啟。

     

    如果你只是想不要讓 PDF 被使用者下載... 有法故有破,目前為止沒有方法,只有增加難度的技巧。

     

    所以線上閱讀的漫畫網頁會用特定軟體來鎖檔案,並且圖檔加密傳輸,網頁先天就有做得到與做不到的,當你的需求超出一般的網頁需求時,你可能要考慮的就是自己寫簡易的網路瀏覽器了。

     

    沒有加密的東西,隨便掛個封包監聽就可以砍下來了,就不用浪費時間了。

    2007年11月1日 上午 09:56
    版主
  • 感謝小朱及chhuang 大大們的回覆,謝謝

     

    回chhuang大大,D:\\PDFfile\\001.pdf 是在 Server 端沒錯

    但是有個問題,我存於資料庫的路徑寫法為D:\PDFfile\001.pdf ,是\不是\\,這樣瀏覽是會有差嗎?

    還是會發生找不到檔案@@?

    謝謝

    2007年11月1日 上午 10:08
  • 感謝璉璉大大又在一次解救我!!

    謝謝您的多次幫忙^^|||

     

    您猜的還真對,為了pdf的加解密及為了讓使用者不可下載pdf檔,讓我傷透腦筋

    真的是一山還有一山高........,以目前我的技術還是無法達成能夠保護pdf檔

     

    不過非常的感謝您的熱心!當然小朱及chhuang大大也很感謝你們的熱心!^^

    現在我只求至少讓pdf不要有開啟存檔這個畫面就好

    讓他直接顯示於瀏覽器,而檔案的保護,可能還要另尋他法。

    謝謝大家的幫忙^^

    2007年11月1日 上午 10:15
  • 那是因為上面是 c# 的語法。

    C 的 \ 代表逸出字元,所以 \\ 等於 vb 的 \ 。

    2007年11月1日 上午 11:07
    版主
  • 謝謝璉璉大大

     

    了解^^,原來是C的語法

    謝謝!!

    2007年11月1日 上午 11:11