ホームページ >ウェブフロントエンド >jsチュートリアル >Mozilla' s pdf.jsを使用したJavaScriptでのカスタムPDFレンダリング
ジョニ・ハルティカネン、フロリアン・ラップル、ジェゼン・トーマス、ジェフ・スミスがレビューしたピア。 SitePointのピアレビュアーに貢献してくれたことに感謝します! ほとんどの最新のブラウザはPDFの視聴をネイティブにサポートしていますが、この機能は開発者の直接的な制御を超えています。 WebアプリのPDFディスプレイをカスタマイズする必要があることを想像してください - 印刷ボタンを無効にするか、ユーザーのサブスクリプションに基づいてページアクセスを制限します。
タグはブラウザのネイティブレンダラーを利用していますが、このようなカスタマイズのプログラム制御が不足しています。Mozilla Labsの強力なライブラリであるPDF.jsを入力します。 ブラウザ内でPDFをレンダリングし、開発者がレンダリングプロセスを完全に制御できるようにします。
<embed></embed>
フルコントロール:
ブラウザの制限をバイパスし、PDFレンダリングをカスタマイズしますテキストレイヤーレンダリング
ズーム基本的な統合
pdf.js
2。 Webワーカーとpdf.js:pdf.worker.js
https://mozilla.github.io/pdf.js/build/pdf.js
3。 pdf.jsでの約束:https://mozilla.github.io/pdf.js/build/pdf.worker.js
PDF.JS APIは、クリーンな非同期操作処理の約束を利用しています。
単純な「Hello World!」をレンダリングしましょう。 PDF( に パスをオプションで指定できます。
に レンダリングを実行します。 セクションを変更してください:
をhttp://mozilla.github.io/pdf.js/examples/learning/helloworld.pdf
で入手可能)。 ファイルがローカルWebサーバーを介して提供されていることを確認してください(例:http://localhost/pdfjs_learning/index.html
)。
pdf.js
:index.html
を含めます
<code class="language-html"></code>
同じディレクトリにない場合は、pdf.worker.js
<code class="language-javascript">PDFJS.workerSrc = "/path/to/pdf.worker.js";</code>
<code class="language-javascript">var url = "http://mozilla.github.io/pdf.js/examples/learning/helloworld.pdf";
PDFJS.getDocument(url)
.then(function(pdf) {
return pdf.getPage(1);
})
.then(function(page) {
var scale = 1.5;
var viewport = page.getViewport(scale);
var canvas = document.getElementById('the-canvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});</code>
:<canvas></canvas>
要素を追加します
index.html
このコードは、PDFをキャンバスに取得、解析、およびレンダリングします。 <code class="language-html"><canvas id="the-canvas"></canvas></code>
特定のページを取得します。 PDFJS.getDocument()
pdf.getPage()
page.render()
SVG PDF.JSはSVGレンダリングもサポートしています。 SVGを使用するには、page.render()
<code class="language-javascript">page.getOperatorList()
.then(function(opList) {
var svgGfx = new PDFJS.SVGGraphics(page.commonObjs, page.objs);
return svgGfx.getSVG(opList, viewport);
})
.then(function(svg) {
container.appendChild(svg);
});</code>
に置き換えますあなたのhtml。で
テキストレイヤーのレンダリング
テキストの選択を有効にするには、 text_layer_builder.js
text_layer_builder.css<p>をダウンロードし、HTMLに含めてください。 より複雑なPDF(例:<code> http://mozilla.github.io/pdf.js/web/compressed.tracemonkey-09.pdf<code>text_layer_builder.js
)を使用します。 次のコードは複数のページをレンダリングし、テキストレイヤーを追加します。
text_layer_builder.css
http://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf
ズーム<code class="language-html"></code>
スケールを調整して
変数ズームレベルを制御します
結論scale
PDF.JSは、カスタムPDFレンダリングをWebアプリケーションに統合するための強力で柔軟な方法を提供します。 クリーンなAPIと非同期処理により、開発者にとって貴重なツールになります。 コードを試して、その高度な機能を調べてください!
よくある質問(FAQ)(簡潔に要約)
カスタムレンダリングの目的:
Webアプリケーション内でシームレスなユーザーエクスペリエンスを提供し、外部のPDF視聴者の必要性を排除します。以上がMozilla&#x27; s pdf.jsを使用したJavaScriptでのカスタムPDFレンダリングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。