6

UPDATE 2016年11月16日上午9時53 EST谷歌文檔查看器返回204響應,不再工作,替代品?

看來很多人仍然看到,儘管谷歌宣稱已經「固定」的問題204級的響應。當我自己測試50次文檔的加載時,其中3次Google返回了204響應。

請訪問此網址,併發布你的不快的評論,讓我們終於可以得到谷歌解決,一旦解決了問題,併爲所有:https://productforums.google.com/forum/?utm_medium=email&utm_source=footer#!msg/docs/hmj39HMDP1M/SR2UdRUdAQAJ

UPDATE 2016年11月4日下午6:01 EST

它看起來像服務起來,再次工作!感謝Google文檔解決問題並回復我的推文。希望它也適用於你們所有人。

UPDATE 2016年11月4日下午3:33 EST

有這似乎表明對服務支持可能會返回和/或有自己的結束造成的問題發佈到https://productforums.google.com/forum/#!msg/docs/hmj39HMDP1M/X6a8xJwLBQAJ更新意想不到的結果。敬請關注。見下面評論:

enter image description here

原貼堆棧溢出從這裏開始

使用我們的網絡軟件,並且依賴於谷歌文檔查看器服務嵌入文件到我們的網站(通過IFRAME)和讓我們的客戶能夠查看文檔而無需打開單獨的應用程序(通過訪問URL)。此功能由Google提供了相當長的一段時間,並且完美無缺!

例觀衆網址:

https://docs.google.com/viewer?url=http://www.pdf995.com/samples/pdf.pdf 

我們開始不過要注意的是,文件我們試圖加載只會加載很少。我們最初認爲他們的服務器存在問題,因此開始調查我們收到的標題響應。特別是,我們注意到幾乎每個請求都返回了204無內容響應。偶爾我們得到了200響應。

這裏是204級的響應,我們得到了一個示例:

enter image description here

這裏是200個答覆我們得到了(很少見)的一個示例:

enter image description here

之後,我向Google搜索了與Google查看器服務相關的204個問題。我結束了這個頁面https://productforums.google.com/forum/#!msg/docs/hmj39HMDP1M/X6a8xJwLBQAJ,這似乎表明谷歌突然和突然中止服務。以下是該討論的截圖(截至本文發稿時)。

enter image description here

鑑於谷歌的「專家」回答人的類似調查的事實;看起來他們已經正式放棄了對觀衆服務的支持。

我的問題有以下幾點:

  1. 沒有任何人確切地知道谷歌是否正式結束了它的支持谷歌瀏覽器服務?

  2. 有誰知道更新過的類似Google產品/服務(也許是Google Drive?),它允許一個人完成與上面提到的查看器服務完全相同的功能嗎?理想情況下,我想要一個簡單的URL,以便我可以引用外部文檔,該文檔不必存在於Google服務器上,但仍可駐留在我的服務器上。

  3. 什麼是一些其他類似的和免費服務,你可以建議讓我來嵌入文檔,如Word文檔,Excel電子文檔,PowerPoint演示文檔和PDF文件到一個網站,讓用戶查看內的文件瀏覽器,而不必讓這些應用程序實際安裝在他們的系統上。

最後一點,我只想說,對於所有的好谷歌確實是令人難以置信的真氣,令人沮喪,惱人的,他們可以提供人們依靠長一段時間,突然拉服務插上它。我相信除了我自己之外,還有很多其他人不會對這種決定表達擔憂。 谷歌糾正了這個問題,並在我的書中仍然不錯:-)

感謝您提前回答您的答案!

+1

值得注意的是,Google從未將此作爲開發者的服務提供,並且它不是官方和受支持的API的一部分。找到有效的終端與谷歌提供服務不一樣,建立在不受支持的終端上會帶來風險。 –

+0

夠公平的。然而,他們默認了成千上萬的人依靠該服務並將其整合到他們的應用程序中。 –

+0

除此之外,微軟還提供類似的服務並積極推廣:https://products.office.com/en-US/office-online/view-office-documents-online。這對Google的服務來說是一種劣質產品,因爲它不支持PDF渲染。我根本沒有看到谷歌會關閉它的任何理由。它只會把人們推向競爭對手的服務。我很樂意支付每月費用以繼續使用Google的。 –

回答

4

我運行的服務也依賴於嵌入Google Doc Viewer,我也遇到過這個問題。我找不到任何其他類似的服務(免費或其他)。

我想出了一個'黑客',可以幫助您擺脫使用Google文檔查看器。它確實需要JQuery。我所做的是每2秒鐘刷新一次iframe,直到它最終正確加載。我還用加載gif來覆蓋iframe,以隱藏持續刷新。我的代碼:

<style> 
.holds-the-iframe { 
    background:url(/img/loading.gif) center center no-repeat; 
} 
</style> 

<div class="holds-the-iframe"> 
     <iframe id="iframeID" name="iframeID" src="https://docs.google.com/viewerng/viewer?url=www.example.com&embedded=true"></iframe> 
</div> 

<script> 
function reloadIFrame() { 
    document.getElementById("ifm").src=document.getElementById("iframeID").src; 
} 

timerId = setInterval("reloadIFrame();", 2000); 

$(document).ready(function() { 
    $('#iframeID').on('load', function() { 
     clearInterval(timerId); 
     console.log("Finally Loaded"); 
    }); 
}); 
</script> 
+0

我想過要做類似的事情。但是,這種解決方案的加載時間會更長,並且由於他們表示將逐步淘汰,因此未來也無法保證可以正常工作。我完全被難住了,爲什麼他們會關閉它知道人們使用它。這並不適用於我,但有很多Wordpress插件使用它,所以我確信很多網站都受到了影響。 –

+2

我同意,這很煩人。另一個「解決方案」是使用Microsoft等效的「https://view.officeapps.live.com/op/embed.aspx?src= [OFFICE_FILE_URL]」(僅適用於Office文檔)來顯示DOC和DOCX文件和類似PDF.JS來處理PDF文件。或者將所有文件轉換爲PDF並使用PDF.JS. – Cellydy

+1

謝謝。我看到了微軟的等價物,但也指出它無法呈現PDF。 Google Viewer非常完美。我在GoogleDocs和jrochelle上發了推文,要求解釋並鼓勵他們給我們提供服務。也許如果他們看到足夠的憤怒,他們會考慮扭轉他們的過程。 –

0

我使用谷歌瀏覽器的副本觀衆對我們的內部管理制度,我們一般只能上傳PDF文件和圖像文件,所以作爲所有功能於一身的解決方案是輝煌的,跨越工作董事會(移動,桌面等)。然而,隨着它變得越來越不可靠,我變得富有創意。

我的解決方案是使用imagick生成並保存JPG版本的PDF,如果在上傳後查看它的話。而不是批量處理所有上傳的PDF文件,只在訪問它們時才進行轉換。

我的推理是:

  1. 我有一個非常小的用戶池,以便文件類型易於管理
  2. 每一個PDF需要再次觀看後上傳幾乎爲零的可能性,所以它的僅在需要報告時才創建。
  3. 我需要通過移動設備查看文件的可靠方式。 iOS和Android在瀏覽器PDF閱讀器中播放不好,每個人都知道有多少PDF在iOS設備上(iBooks任何人?)

一旦文件被查看並且創建了pdf版本的pdf,只要用戶查看PDF,就可以使用它。雖然不是很漂亮,但肯定是有效的,但我承認存在一個加倍的元素,但我沒有任何存儲限制。原始文件也不會被修改,因此它也可以作爲第三級遠程備份。這不是通過設計,而是一個幸福的巧合。

如果對您有用,請隨意使用下面的代碼。有可能更優雅的方式來做到這一點,但對我的目的和用戶來說,這很好。

  $_thumbnail = 'files/thumbnails/'.$_section.'/'.$_fileName.'.jpg'; 

      if (!file_exists($_thumbnail)) { 

        $_file = 'files/'.$_section.'/'.$_fileName; 

        $imagePreview = new imagick(); 
        $imagePreview->setResolution(300, 300); 
        $imagePreview->readimage($_file); 
        $imagePreview->setImageFormat("jpg"); 
        $imagePreview->writeImage('files/thumbnails/'.$_section.'/'.$_fileName.'.jpg'); 

        echo '<img src="/files/thumbnails/'.$_section.'/'.$_fileName.'.jpg" width="100%"/>'; 

      } else { 
        echo '<img src="/files/thumbnails/'.$_section.'/'.$_fileName.'.jpg" width="100%"/>'; 

      } 
0

一個簡單的解決方案/黑客與Reactjs,雖然可以很容易地實現任何其他圖書館/香草。

與基本概念一起使用:嘗試加載 - 如果加載完成,則清除間隔,否則嘗試每3秒再次加載一次。完美的作品

(我已經編輯自己的代碼,以便它包含最少的代碼,所以未測試)

VAR陣營=需要(「反應」);

export default class IframeGoogleDocs extends React.Component { 
    constructor(props) { 
     super(); 
     this.bindActions(); 
    } 
    bindActions() { 
     this.updateIframeSrc = this.updateIframeSrc.bind(this); 
     this.iframeLoaded = this.iframeLoaded.bind(this); 
    } 
    iframeLoaded() { 
     clearInterval(this.iframeTimeoutId); 
    } 
    getIframeLink() { 
     return `https://docs.google.com/gview?url=${this.props.url}`; // no need for this if thats not dynamic 
    } 
    updateIframeSrc() { 
     this.refs.iframe.src = this.getIframeLink(); 
    } 
    componentDidMount() { 
     this.iframeTimeoutId = setInterval(
      this.updateIframeSrc, 1000 * 3 
     ); 
    } 
    render() { 
     return (
      <iframe onLoad={this.iframeLoaded} onError={this.updateIframeSrc} ref="iframe" src={this.getIframeLink()}></iframe> 
     ); 
    } 
}