2012-02-08 310 views
17

Estoy usando google docs viewer para mostrar un documento pdf en una página html y me gustaría abrir el documento comenzando en la página 20 en lugar de 1, por ejemplo.cómo abrir una página específica en Google docs viewer

Casi no hay documentación sobre el servicio de visor de documentos de Google. Dicen en su página web https://docs.google.com/viewer que el servicio solo acepta dos parámetros (url e incrustado) pero he visto otros parámetros buscando en la web, como "a", "pagenumber", "v" y "attid", ninguno de ellos lo hizo algo para mí Intenté agregar #: 0.page.19 al final de mi url (esa es la identificación del div que contiene el número de página 20 dentro del cuerpo que crea google) pero simplemente lo ignora o funciona de forma aleatoria.

¿Ustedes saben cómo decirle a google docs viewer que muestre el documento comenzando en una página específica?

+0

¿Alguna solución nueva que funcione para este problema? – tommeeyy

Respuesta

13

Encontré una solución que publicaré aquí por si acaso alguien se encuentra en la misma situación.

Cada página dentro del iframe del visor de Google Docs tiene una identificación como :0.page.X, siendo X el número de la página. Al llamar al servicio como este

<iframe id="iframe1" src="http://docs.google.com/gview?url=http://yourpdf&embedded=true#:0.page.20"> 

no funcionará (tal vez porque los identificadores de páginas aún no se crean cuando se representa la página?)

Por lo que sólo tiene que añadir un atributo onload para el iframe:

<iframe id="iframe1" src="http://docs.google.com/gview?url=http://yourpdf&embedded=true" onload="javascript:this.contentWindow.location.hash=':0.page.20';"> 

y voilà, el iframe se desplazará automáticamente hacia abajo después de la carga.

Tenga en cuenta que los índices de página son basados ​​en cero. Si desea ver la página 20 de un documento en el visor, se necesitaría utilizar el parámetro :0.page.19

+2

No funciona para mí, si el archivo que tiene tiene un protocolo diferente (http vs https). Sigo obteniendo JavaScript inseguro intento de acceder al marco ... ¿Hay alguna solución para este – DavidVdd

+1

¿Alguna solución nueva que funcione para este problema? – tommeeyy

0

Mi PDF es de 13 páginas, pero cuando utilicé de hash: 0.page.13, sólo saltado a la página 10. Tenía para establecer TimeTimeout y llamar a la misma función de nuevo:

Solo se necesita hacer eso una vez por carga de página, entonces parece estar sincronizado correctamente. Estoy seguro de que hay una solución más elegante:

var is_caught_up = false; 
function pdf_go(page){ 
    $('pdf_frame').contentWindow.location.hash=':0.page.'+page; 
    if (!is_caught_up){ 
     setTimeout('pdf_catchup('+page+')', 500); 
    } 
} 

function pdf_catchup(page){ 
    $('pdf_frame').contentWindow.location.hash=':0.page.'+page; 
    is_caught_up = true; 
} 
0

tengo trabajo en el visor imbed

Al cambiar la dirección URL con una función timout, este becous el pdf no se muestra directamente

$(window).load(function() { setTimeout(function() { $('.gde-frame').attr('src', ' https://docs.google.com/viewer?url=http://yourdomain.com/yourpdf.pdf&hl=nl&embedded=true#:0.page.15 '); }, 1000);

});

Sólo tienes que copiar la url imbed y añadir su picadillo para la página (#: 0.page.15> irá a la página 15)

Es posible que desee cambiar el idioma a su propio & hl = nl

y para la gente cómo han de soportar IE8

si se utiliza un texto modelo como éste :

<!--[if IE 8 ]> <html class="no-js ie8" lang="en"> <![endif]-->

puede cambiar la salida del enlace directo a la función de densidad de este tipo,

if($("html").hasClass("ie8")) { 


      $('#linkID').attr('href', 'http://yourdomai.com/yourpdf.pdf'); 


     }; 

el pdf se mostrará en el lector de PDF desde IE

2

encontré estas dos:

1) sólo una captura de pantalla (imagen) de la página específica (sin de navegación):

https://docs.google.com/viewer?url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true&a=bi&pagenumber=12 

2) un enlace a la página específica de PDF en IFRAME (con de navegación):

<script> 
var docURL='https://docs.google.com/viewer?url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true'; 
var startPAGE=7; 

document.write('<iframe id="iframe1" onload="javascript:go_to_page('+ startPAGE +')" src="https://docs.google.com/viewer?url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true"width="600" height="400" ></iframe>'); 
function go_to_page(varr) { document.getElementById("iframe1").setAttribute("src", docURL + '#:0.page.'+ (varr-1));} 
</script> 



p.s. entonces usted puede tener en su sitio web <a href="javascript:go_to_page('3');">go to page 3</a>

Cuestiones relacionadas