Angular.JS で PDF を受信して​​ダウンロードする方法

高洛峰
リリース: 2016-12-05 11:13:52
オリジナル
1727 人が閲覧しました

はじめに

jsPDF は、JavaScript 言語を使用して PDF を生成するオープンソース ライブラリです。 Firefox プラグイン、サーバーサイド スクリプト、またはブラウザ スクリプトで使用できます。

クライアント Safari と iPhone Safari が最もよくサポートされており、Windows では Opera と Firefox 3 がそれに続きます。 IEはまだサポートしていません。

サンプルコード:

var doc = new jsPDF();
doc.text(20, 20, 'Hello world.');
doc.save('Test.pdf');
ログイン後にコピー

サーバー側は完璧に動作します。

jsPDFは使いやすいですが、中国語には対応していません。

pdfmakeは中国語をサポートしていますが、フォントファイルも導入する必要があるため、ファイルサイズが10MBを超える可能性があり、フロントエンドには適していません。

pdfmake はクライアントサーバーベースの PDF 印刷ソリューションであり、完全に JavaScript に基づいて開発されています。強力な植字エンジンを提供します

インストール:

client-version bower install pdfmake
server-version npm install pdfmake
ログイン後にコピー

最後に、バックエンドは PDF を生成するために使用され、フロントエンドはインターフェースを通じてリクエストし、バックエンドは PDF ストリームを返し、最後にフロントエンドは Blob を通じて PDF を生成してダウンロードします。 。

AngularJSでの解決策

$http.get('/receivePDFUrl', {responseType: 'arraybuffer'}) // 设置$http get请求的responseType为arraybuffer
 .success(function(data){
  var file = new Blob([data], {type: 'application/pdf'}); // 使用Blob将PDF Stream 转换为file
  var fileUrl = URL.createOjectURL(file);
  window.open(fileUrl); // 在新的页面中打开PDF
 })
ログイン後にコピー

PDFのファイル名を設定する方法

$http.get('/receivePDFUrl', {responseType: 'arraybuffer'}) // 设置$http get请求的responseType为arraybuffer
 .success(function(data){
  var file = new Blob([data], {type: 'application/pdf'}); // 使用Blob将PDF Stream 转换为file
  var fileUrl = URL.createOjectURL(file);
  var a = document.createElement('a');
  a.href = fileURL;
  a.target = '_blank';
  a.download = 'yourfilename.pdf';  
  document.body.appendChild(a);  
   a.click();
 })
ログイン後にコピー

発生した問題

バックエンドはリセットAPIを使用してインターフェイスを作成します。フロントエンド フレームワークは AngularJS を使用するため、$resouce を使用してインターフェイスを呼び出します。 ResponseType: arraybuffer も設定されますが、生成された PDF を開くことはできません。最終的には、$http.get() メソッドを使用するだけです。

互換性の問題

HTML5 API: Bolb を使用しているため、IE10+ のみをサポートできます。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!