【问题标题】:Google Docs viewer in IEIE 中的 Google 文档查看器
【发布时间】:2011-02-17 01:43:19
【问题描述】:

我到处寻找解决方案,但找不到。我正在使用Google Docs Viewer 查看 PDF 文件。这是一个很棒的工具,但我似乎无法让它在 Internet Explorer(7 或 8)中运行。我所有的图像都显示为“缺失”图标。如果我在外部查看文件,它似乎加载正常并且它将开始工作(我假设因为图像正在被缓存)。该文档显示在iframe 中,并且可以在所有其他浏览器中使用。有没有人遇到过让它在 IE 中工作的解决方案?如果没有,是否有可以显示 PPT 和 PDF 文件的替代方案?

【问题讨论】:

  • 我猜这个问题属于超级用户,不确定。但是,这对我有用
  • 您好,如果需要,我会将其移至超级用户。我想我会把它贴在这里,因为它更多的是在开发方面。您的意思是文档查看器第一次在 IE 中为您工作(就像您以前从未打开过的文档一样)?

标签: internet-explorer pdf iframe google-docs viewer


【解决方案1】:

我知道这是一个老问题,但由于问题仍然存在,我偶然发现了这个问题,答案指向一个空白网站,这里是@codeinthehole answer 中提到的脚本的实际代码,就在万一别人需要它。 (这次可以在GitHub找到)

<?php
# This proxy code is a bypass for an existing flaw in Google Docs Viewer that breaks the functionality
# for some IE users. If you do not wish to use this code, select Google Standard Viewer rather than
# Enhanced Viewer in GDE Settings. Note that viewer toolbar customization options depend on this
# proxy workaround remaining enabled.
# 
# The problem this code addresses is discussed at length on Google's Help Forum:
# http://www.google.com/support/forum/p/Google+Docs/thread?tid=22d92671afd5b9b7&hl=en
# 
# This code is based on the work of Peter Chen. For more information, see:
# http://peterchenadded.herobo.com/gview/
#
# Peter's code is modified below to allow for cURL fallback, viewer toolbar customization,
# and to reflect changes in the viewer since the code was first released.
// test for allow_url_fopen in php config; try curl for function if disabled
if (ini_get('allow_url_fopen') !== "1") {
    if (function_exists('curl_version')) {
        $curl = 1;
    } else {
        $err = "This function is not supported on your web server. Please add ";
        $err .= "<code>allow_url_fopen = 1</code> to your php.ini or enable cURL library. ";
        $err .= "If you are unable to do this, please switch to Google Standard ";
        $err .= "Viewer in GDE Options.";
        echo $err;
        exit;
    }
}
if (isset($_GET['embedded'])) {
    // get the src page, change relative path to absolute
    if (isset($curl)) {
        $code = curl_get_contents("http://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
    } else {
        $code = file_get_contents("http://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
    }

    // fix path to images
    $search[] = "/viewer/images";
    $replace[] = "http://docs.google.com/viewer/images";
    $search[] = "/gview/images";
    $replace[] = "http://docs.google.com/viewer/images";

    // proxy the javascript file
    $search[] = "gview/resources_gview/client/js";
    $replace[] = "?jsfile=gview/resources_gview/client/js";
    if (isset($_GET['gdet'])) {
        $gdet = $_GET['gdet'];
        # hide google icon (i)
        /* These are no longer visible by default - not necessary
        if (strstr($gdet, 'i') !== false) { 
            $search[] = ".goog-logo-small {";
            $replace[] = ".goog-logo-small { display: none !important;";
        }
        # hide single/double page view (p)
        if (strstr($gdet, 'p') !== false) { 
            $search[] = ".controlbar-two-up-image {";
            $replace[] = ".controlbar-two-up-image { display: none !important;";
            $search[] = ".controlbar-one-up-image {";
            $replace[] = ".controlbar-one-up-image { display: none !important;";
        }
        */
        # hide zoom in/out (z)
        if (strstr($gdet, 'z') !== false) {
            $search[] = "#zoomOutToolbarButtonIcon {";
            $replace[] = "#zoomOutToolbarButtonIcon { display: none !important;";
            $search[] = "#zoomInToolbarButtonIcon {";
            $replace[] = "#zoomInToolbarButtonIcon { display: none !important;";
        }
        # hide open in new window (n)
        if (strstr($gdet, 'n') !== false) {
            $search[] = "#openInViewerButtonIcon {";
            $replace[] = "#openInViewerButtonIcon { display: none !important;";
        }
    }

    $code = str_replace($search, $replace, $code);

    header('Content-type: text/html');
    echo $code;

} else if (isset($_GET['a']) && $_GET['a'] == 'gt') {
    // get text coordinates file, can not redirect because of same origin policy
    if (isset($curl)) {
        $code = curl_get_contents("http://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
    } else {
        $code = file_get_contents("http://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
    }

    header('Content-type: text/xml; charset=UTF-8');
    echo $code;

} else if (isset($_GET['a']) && $_GET['a'] == 'bi') {
    // redirect to images  
    header("Location: http://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
    header('Content-type: image/png');

} else if (isset($_GET['jsfile'])) {
    // proxy javascript files and replace navigator.cookieEnabled with false
    if (isset($curl)) {
        $code = curl_get_contents("http://docs.google.com/" . $_GET['jsfile']);
    } else {
        $code = file_get_contents("http://docs.google.com/" . $_GET['jsfile']);
    }

    $search = array("navigator.cookieEnabled");
    $replace = array("false");
    $code = str_replace($search, $replace, $code);

    header('Content-type: text/javascript');
    echo $code;

} else {
    // everything else, of which there isn't!  
    header("Location: http://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
}
function curl_get_contents($url)
{
    $ch = curl_init();
    $timeout = 5; // set to zero for no timeout
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file_contents = curl_exec($ch);
    curl_close($ch);

    return $file_contents;
}

【讨论】:

    【解决方案2】:

    我也有同样的问题,但我认为要求用户在 IE 中将 URL 添加到他们受信任的站点是不可接受的。

    幸运的是我遇到了following post

    如果禁用第三方 cookie,嵌入式版本的 Google 文档查看器 (gview) 将无法正确加载其图像。这个问题对于大多数 IE 用户来说都是一个问题,因为默认情况下它将被禁用。下面我提供了一个解决这个问题的方法,至少在谷歌添加 p3p 之前。可以在 google docs help forum 找到有关该问题的原始讨论。

    我已经试过了,它可以在 IE8、IE7 和 IE6 中运行。

    【讨论】:

    【解决方案3】:

    我发现解决此问题的唯一方法是将https://docs.google.com 添加到您受信任的互联网站点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 2011-06-22
      • 1970-01-01
      • 2013-01-16
      • 2012-08-19
      • 1970-01-01
      相关资源
      最近更新 更多