2012-09-12 12 views
6

私は、ユーザーがpdfファイルを生成して印刷できるように、chrome 23+(オフライン)パッケージのアプリケーションを開発しようとしています。私はこれを達成するために様々な方法を試しましたが、本当にうまくいきません。Chromeパッケージアプリケーション/ pdf.js

window.html (includes pdf.js (http://code.google.com/p/jspdf/) and genpdf.js (see below)): 

.... 
<browser src="about:blank" width="1024" height="768"></browser> 

genpdf.js: 

var doc = new jsPDF(); 
doc.text(20, 20, 'foo'); 
doc.text(20, 30, 'bar'); 
document.querySelector('browser').src = window.webkitURL.createObjectURL(new Blob([doc.output()], {type: 'application/pdf'})); 

これは、生成されたPDFを表示するための私の好みの方法だろうが、ユーザーを凍結ウィンドウでそれを印刷することはできません。このようなものを使用して

、ブラウザ/アプリがフリーズします。

もう一つの方法は、デスクトップにPDFを保存するには、次のようになります。

chrome.fileSystem.chooseFile({type: 'saveFile'}, function(writableFileEntry) { 
    writableFileEntry.createWriter(function(writer) { 
     writer.onerror = function(e) { 
     console.log('writeend'); 
     }; 
     writer.onwriteend = function(e) { 
     console.log('writeend'); 
     }; 
     var doc = new jsPDF(); 
     doc.text(20, 20, 'foo'); 
     doc.text(20, 30, 'bar'); 
     writer.write(new Blob([doc.output()], {type: 'application/pdf'})); 
    }, errorHandler); 
}); 

これは動作しますが、アプリが閉じられるまで、デスクトップ上のファイルがロックされています。保存されたファイルを解放するために欠けているapi-callがありますか?

ありがとうございます!

+0

誰かがこれに答えるのが大好きです。 – knownasilya

+1

あなたの好みの解決策が原因でChromeがクラッシュする場合は、最初に行うべきことは[問題を提出](http://code.google.com/p/chromium/issues/list)です。 Chromeデベロッパーがあなたを助けることができます。 –

答えて

3

第2の解決策では、バッファサイズを指定する必要があると考えているため、書き込みが終了した時点を作者が知ることができます。

var docBuffer = doc.output(); 
writer.write(new Blob([docBuffer], {type: 'application/pdf', 'size': docBuffer.length})); 
+0

私はあなたの答えが問題を解決するとは言いませんが、確かに私たちはそれをデバッグに近づけます。 – knownasilya

+0

はい、そうです! opが私が手助けしたいと思ういくつかの情報を提供している場合 – cvsguimaraes

-1

wkhtmltopdfにスニークピークを取る、それがWebKitのエンジンを使用してHTML + CSSページからPDFを生成します。私はそれが大好きで、Chromiumブラウザにページが表示されるのと同じ結果をピクセルに生成します。 MS-WindowsとLinux用のバージョンがありますが、私は両方を試しました。

+1

OPはブラウザ固有の方法を探しています。具体的には、Webkitをベースにしたユーティリティではなく、Chrome Appsを使用しています。 – knownasilya

+0

これはKnownasilyaノートのように質問された質問には全く言及していません。 –

+0

問題を解決するよりも、問題を解決するための労力がかかりません。私は*パッケージ化されたアプリケーション*に精通していませんが、外部の実行可能ファイルを起動することができれば、もっと速い解決策かもしれません。また、HTMLからPDFを生成する際には、Webデザイナーがテンプレートを編集することができます。結果レイアウトはよりプロフェッショナルになります。 – ern0

関連する問題