web-dev-qa-db-fra.com

comment ouvrir une page spécifique dans la visionneuse de documents de Google

J'utilise la visionneuse de documents de Google pour afficher un document pdf dans une page html et je voudrais ouvrir le document à partir de la page 20 au lieu de 1 par exemple.

Il n'y a pratiquement aucune documentation sur le service de visualisation de documents de Google. Ils disent dans sa page Web https://docs.google.com/viewer que le service n'accepte que deux paramètres (url et intégré) mais j'ai vu d'autres paramètres rechercher sur le Web, comme "a" , "numéro de page", "v" et "attid", aucun d'eux ne m'a rien fait. J'ai essayé d'ajouter #: 0.page.19 à la fin de mon URL (c'est l'ID de la div contenant le numéro de page 20 à l'intérieur du corps créé par Google), mais il l'ignore ou fonctionne de manière aléatoire.

Savez-vous comment dire à la visionneuse Google Documents d'afficher le document à partir d'une page spécifique?

19
Juan

J'ai trouvé une solution que je publierai ici au cas où quelqu'un se trouverait dans la même situation.

Chaque page du iframe de la visionneuse de documents de Google a un identifiant comme :0.page.X, X étant le numéro de la page. Appeler le service comme ceci

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

ne fonctionnera pas (peut-être parce que les identifiants des pages ne sont pas encore créés lors du rendu de la page?)

Il vous suffit donc d'ajouter un attribut onload à l'iframe:

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

et voilà, l'iframe défilera automatiquement vers le bas après le chargement.

Notez que les index de page sont basés sur zéro. Si vous souhaitez afficher la 20e page d'un document dans la visionneuse, vous devez utiliser le paramètre :0.page.19

16
Juan

Pour moi, cette solution ne fonctionnait pas avec la version actuelle de Google Viewer. Lien vers une page spécifique sur Google Document Viewer sur iPad m'a aidé. Utilisez & a = bi & pagenumber = xx comme paramètre d'URL supplémentaire.

3
FSaccilotto

J'ai trouvé ces deux-là:

1) juste une capture d'écran (image) d'une page spécifique (sans navigation):

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

2) un lien vers une page spécifique de PDF dans IFRAME (avec navigation):

<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. alors vous pouvez avoir sur votre site web <a href="javascript:go_to_page('3');">go to page 3</a>

2
T.Todua

Je l'ai fait fonctionner dans la visionneuse imbed

En changeant l'url avec une fonction de temporisation, car le pdf n'est pas directement affiché

$(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);

});

Copiez simplement l'URL imbed et ajoutez votre hachage pour la page (#: 0.page.15> ira à la page 15)

Vous voudrez peut-être changer la langue en votre propre & hl = nl

et pour les gens comment doivent soutenir ie8

si vous utilisez un passe-partout comme celui-ci:

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

vous pouvez changer la sortie du lien directement en pdf comme ceci,

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


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


        };

le pdf sera affiché dans le lecteur pdf d'IE

0
user2319918

Mon PDF est de 13 pages, mais quand j'ai utilisé le hachage: 0.page.13, il n'est passé qu'à la page 10. J'ai dû définir TimeTime et appeler à nouveau la même fonction:

Seulement nécessaire de le faire une fois par chargement de page, puis il semble être synchronisé correctement. Je suis sûr qu'il existe une solution plus élégante:

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
Dan