2017-04-03 45 views
0

私はクライアント側でPDFファイルをjavascriptを使用して印刷しようとしています。問題はFRMは常にnullであるということであると勝利がJavaScriptを使用してクライアント側でPDFファイルを印刷

マイPDF要素は、私が呼び出しています

<iframe id="pdf" name="pdf" src="C:\My_P.pdf"></iframe> 

以下のようになり、印刷機能を有していない

function doit() { 
    var win = document.getElementById("pdf"); 
    var frm = document.getElementById("pdf").contentWindow; 
    frm.print(); 
    win.print(); 
}   

次のように私のjavascriptのコードがありますC#からの機能は以下の通りです

ClientScript.RegisterStartupScript(this.GetType(), "Print", "doit();", true); 

本当に苦労しています。助けてください

+0

Iフレームがクライアントからロードされ、関数doitが呼び出されてからpdfがロードされます。あなたはiframeのPDFコンテンツを見ることができますか? – Anil

+0

いいえ、エラーはローカルリソースを読み込むことができません:file:/// C:/_temp/My_P.pdf。私はディレクトリからC: – user2837961

答えて

1

、あなたはRegisterStartupScript

<iframe id="pdf" name="pdf" src="C:\My_P.pdf" 
    onload="doit();"></iframe> 
を使用して、サーバーからそれを呼び出す必要がないかもしれません

もう1つの問題はsrcパスC:\My_P.pdfのようですが、私のフレームはコンテンツを表示するURLを期待しています。参照Iframe

これを軽減するには、たとえば次のようなディレクトリを作成します。あなたのasp.netプロジェクト内のMyResourceとこのディレクトリにあなたのpdfをコピーし、src = "/ MyResource/My_P.pdf"を変更してください。あなたのpdfはブラウザにアクセス可能でなければならず、Iframeだけが読み込むことができます。

+0

ファイルがサーバー側になければならないということですか? – user2837961

+0

はい、URL経由でiframeにアクセスできる任意のサーバー上にある可能性があります。 – Anil

+0

問題はiframeに読み込むことです。私はpdfを見ることができません。 Webアプリケーション\\ WebApplication \ bin \ Tempにディレクトリを作成し、pdfをTempディレクトリに配置しました。それはそれをロードしません。印刷ダイアログが表示され、下にaspxリンクが表示されます。 – user2837961

0

あなたはsame origin policyによって妨げられていますか?過去には

私が使用した:あなたの問題を解決するにはインラインフレームがロードされた後に印刷機能を呼び出すことです

window.frames["pdf"].focus(); 
window.frames["pdf"].print(); 
+0

をロードしてはいけないと思った。うまくいかない – user2837961

関連する問題