2016-04-14 19 views
0

私は自分のアプリケーションでWinJSを使用し、いくつかのコンテンツを印刷しようとしています。このチュートリアルのhttps://dzone.com/articles/windows-8-print-contract-%E2%80%93に従ってプリンタクラスを作成しました。WinJSのカスタムカスタムオブジェクトから印刷機能

function registerForPrintContract(participiantData) { 
    var printManager = Windows.Graphics.Printing.PrintManager.getForCurrentView(); 
    printManager.addEventListener("printtaskrequested", onPrintTaskRequested, false); 
} 

function onPrintTaskRequested(printEvent) { 
    var printTask = printEvent.request.createPrintTask("Print Example", function (args) { 
     printCurrentPage(args); 

     printTask.oncompleted = onPrintTaskCompleted; 
    }); 
} 

function printCurrentPage(args) { 
    var docHtml = document.createDocumentFragment(); 
    docHtml.appendChild(createDocumentContent()); 
    args.setSource(MSApp.getHtmlPrintDocumentSource(docHtml)); 
} 

function createDocumentContent() { 
    var container = document.createElement("div"); 
    container.innerHTML = "<h2>" + firstname + " " + lastname + "</h2>" + 
          "<h4>" + emailaddress1 + "<h4>"; 
    return container; 
} 

function showPrintUI() { 
    Windows.Graphics.Printing.PrintManager.showPrintUIAsync(); 
} 

私の問題は、オブジェクトデータをcreateDocumentContent()関数に転送する方法がわかりません。この例では、私はファーストネーム、ラストネーム、およびEメールを入れました。それらのデータ私はhtmlページから得ることができない私はそれらを印刷ボタンをクリックして送信する必要があります。

私が見たすべての例は、現在のページを印刷するか、またはDOMを照会してHTMLページから取得できるデータから新しいコンテンツを作成することです。カスタムオブジェクトを送信できる例はありません。 これを行う最善の方法は何ですか?

答えて

0

私の問題は、オブジェクトデータをcreateDocumentContent()関数に転送する方法がわかりません。この例では、私はファーストネーム、ラストネーム、およびEメールを入れました。それらのデータ私はhtmlページから得ることができない私はそれらを印刷ボタンをクリックして送信する必要があります。

"<h2>"+firstname + " " +lastname+"</h2>"+"<h4>" + emailaddress1 + "<h4>"のhtml出力を印刷しますか?

Windowsストアアプリケーション開発でinnerHTMLの動作が変更されました。それがtoStaticHTMLメソッド


によって処理された介するよう

コンテンツがフィルタリングされる。しかしWinJSは、あなたがHTMLを注入するために利用できる方法を提供しています: はHTML and DOM API changes list innerHTMLのセクションを参照してください。ここで

は、このメソッドのドキュメントへのリンクです:ここではWinJS.Utilities.insertAdjacentHTML

は簡単な使用にこの方法を示したコードスニペットです:

function createDocumentContent() { 
    var obj = { 
     firstname: "winffee", 
     lastname: "xia", 
     emailaddress1:"[email protected]" 
    } 
    var htmlString = "<h2>" + obj.firstname + " " + obj.lastname + "</h2>" + 
         "<h4>" + obj.emailaddress1 + "<h4>"; 
    var container = document.createElement("div"); 
    WinJS.Utilities.insertAdjacentHTML(container, "beforeend", htmlString); 
    return container; 
} 
関連する問題