Googleのドキュメントビューアを使用してhtmlページにpdfドキュメントを表示しています。たとえば、1ではなく20ページからドキュメントを開きたいのですが。
Googleのドキュメントビューアサービスに関するドキュメントはほとんどありません。彼らはそのウェブページで https://docs.google.com/viewer サービスは2つのパラメーター(URLと埋め込み)のみを受け入れると言いますが、 "a"のような他のパラメーターがウェブを検索するのを見ました、「ページ番号」、「v」、「attid」のいずれも、私には何もしませんでした。私は私のURLの最後に#:0.page.19を追加しようとしましたが(それはgoogleが作成する本文内にページ番号20を含むdivのIDです)、それを無視するか、ランダムに機能します。
あなたは特定のページから始まるドキュメントを表示するようにGoogleドキュメントビューアに指示する方法を知っていますか?
誰かが同じ状況にある場合に備えて、ここに投稿する解決策を見つけました。
Googleのドキュメントビューアiframe内のすべてのページには、:0.page.X
のようなIDがあり、Xはページの番号です。このようなサービスを呼び出す
<iframe id="iframe1" src="http://docs.google.com/gview?url=http://yourpdf&embedded=true#:0.page.20">
動作しません(ページがレンダリングされたときにページIDがまだ作成されていないためか?)
したがって、iframeにonload属性を追加するだけです。
<iframe id="iframe1" src="http://docs.google.com/gview?url=http://yourpdf&embedded=true" onload="javascript:this.contentWindow.location.hash=':0.page.20';">
ちなみに、iframeはロード後に自動的に下にスクロールします。
ページインデックスはゼロから始まります。ドキュメントの20ページ目をビューアで表示する場合は、パラメータ:0.page.19
を使用する必要があります。
私にとって、このソリューションは現在のバージョンのGoogleビューアでは機能しませんでした。 iPadのGoogleドキュメントビューアの特定のページへのリンク が役立ちました。追加のURLパラメータとして&a = bi&pagenumber = xxを使用します。
私はこれらの2つを見つけました:
1)特定のページのスクリーンショット(画像)のみ(なしナビゲーション):
_https://docs.google.com/viewer?url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true&a=bi&pagenumber=12
_
2)PDF IFRAMEの特定のページへのリンク(withナビゲーション):
_<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。それからあなたはあなたのウェブサイト上に持つことができます<a href="javascript:go_to_page('3');">go to page 3</a>
組み込みビューアで機能するようになりました
Timout関数でURLを変更すると、PDFが直接表示されなくなります
$(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);
});
埋め込みURLをコピーして、ページのハッシュを追加するだけです(#:0.page.15> 15ページに移動します)
言語を自分の&hl = nlに変更することをお勧めします
そして人々のためにどのようにie8をサポートする必要があります
このようなボイラープレートを使用する場合:
<!--[if IE 8 ]> <html class="no-js ie8" lang="en"> <![endif]-->
このようにリンクの出力を直接PDFに変更できます、
if( $("html").hasClass("ie8") ) {
$('#linkID').attr('href', 'http://yourdomai.com/yourpdf.pdf');
};
pDFはIEのPDFリーダーに表示されます
私のPDFは13ページですが、ハッシュを使用した場合:0.page.13
、10ページにジャンプしただけです。setTimeoutを実行して、同じ関数を再度呼び出す必要がありました。
ページの読み込みごとに1回だけ実行する必要があるので、適切に同期されているようです。よりエレガントな解決策があると確信しています:
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;
}