2009-11-25 65 views
2

是否有一些方法從瀏覽器使用JavaScript或嵌入式閃存對象等發出屏幕截圖(僅限瀏覽器窗口內容),以便獲得完整質量的圖像頁面內容被保存或打印或另一種方法。在客戶端捕獲網站的截圖(Javascript或閃存)

我有一個web應用程序(asp.net 3.5)谷歌地圖和其他ajax操作客戶端像自定義瓷磚服務器。我一直在試圖實現一種方式讓用戶打印高質量的網頁截圖。

我已經使用了基本的Window.Print(),但是在IE和FF中都有很多谷歌地圖內的工件和一些項目,比如彈出的氣泡不打印。我已經嘗試過通過cutepdf保存pdf(只是在此處發佈示例),並且通過window.print()的質量也很低。

例如,FireShot插件的截圖是完美的,我希望客戶擁有。然而,這只是FF,我不能要求客戶在他們的瀏覽器上安裝插件/ ActiveX控件。

看一看這個下載example zip file(4mb)有:使用的FireShot (什麼,我想在 頁面實現 直通一個HTML/JS按鈕,例如)

  • 火狐

    1. 實例截屏Window.Print()導致
    2. IE Window.Print()結果 (用於保存爲PDF cutepdf)(cutepdf 用於保存作爲PDF)

    注意2,3即使打開時也不會打印出小泡。

    現在,我已經在我的網站上添加了該功能以全屏顯示並指導用戶拍攝屏幕截圖或調用window.print()函數。

    我仍在尋找打印/抓取我的頁面的方法。

    是否有任何flash/activex控件可以包含在我的頁面中,並通過它們提供高質量的打印機制?

    再次感謝所有的幫助,但我仍然需要更多。 :)

    預先感謝您。

    http://rapidshare.com/files/311849636/Print_examples.zip.html 
    
  • +0

    關於爲什麼泡沫在印刷中消失的任何想法。畢竟它只是HTML – 2009-11-25 05:17:47

    回答

    1

    在豐富的Web應用程序中可靠地提供高質量的屏幕上打印版本的唯一方法是使用客戶端(例如JavaScript)向服務器發送有關當前狀態的精確信息(其中氣泡等等),並用它來生成模仿定位的圖像。將該圖像轉換爲PDF或您擁有的東西,然後發送給客戶端進行下載。

    +0

    會變得過於複雜。特別與谷歌地圖。在服務器上獲取磁貼可能不合法。無論如何,與這種方法相比,我認爲我可以使用正常的打印方法來告訴用戶捕捉屏幕會產生更高的質量...... – 2009-11-25 05:16:25

    0

    我不認爲這是可能的。能夠通過腳本捕捉用戶的屏幕會產生相當大的安全風險(想象一下收集屏幕信息的壞點)。

    +0

    我不想將它傳輸到服務器,但讓用戶保存圖像,並稍後打印。只是window.print()會做什麼,但質量更高的 – 2009-11-25 05:09:30

    2

    你會發現所有這些工作只是爲了發現像Snagit這樣的簡單應用程序將完成這項工作。Building a SnagIt Screen Capture Plugin

    +0

    +1對於Snagit ..我很喜歡它。 – monksy 2009-11-25 05:46:39

    +3

    我不明白。 isnt snagit一個軟件,必須安裝在客戶端上?它不能被嵌入到網頁中? – 2009-11-25 05:55:16

    +1

    我懷疑你是否能夠獲得一個嵌入式對象,以便能夠訪問瀏覽器的畫布並使其跨瀏覽器,跨操作系統兼容。您需要運行足夠的操作系統才能獲取畫布。你說你試過cutepdf。那麼也沒有嵌入。 – Gerard 2009-11-25 22:00:55

    1

    谷歌還有一個Static Maps API,可能會給你很好的結果。我曾經自己研究過它,只是沒有跟它一起使用(當時),他們可以在多段線中支持多少點。

    +0

    感謝您的鏈接。自從我使用自定義切片圖層以來,點限制不應該成爲問題。如果我發現它有用,我會發布反饋 – 2009-12-16 11:17:19

    0

    不,沒有,雖然它有時會用於bug報告等等。

    您可能會通過創建單獨版本的頁面作爲PDF生成的最佳結果。通過一切手段都無法迅速修復,但您將獲得極好的打印質量和完全控制一切。地圖部分可能會有點棘手,但你需要以某種方式將地圖作爲服務器上的位圖獲取,如果它不在客戶端的閃存中,我不知道你會怎麼做。