4

HTML と JavaScript を使用して構築された Windows 8 アプリがあります。JSON データ ソースから生成された場所の動的リストを表示する ListView があります。

MSDN サンプル (静的コンテンツを含むページを印刷する方法を示す) の Print Contract コードを使用して、このアプリに印刷機能を実装しています。印刷すると、ListView のリストの半分だけが表示されます。

ListView から完全なリストを印刷して、コンテンツが大きい場合に複数のページにまたがるようにするにはどうすればよいですか?

4

1 に答える 1

1

ここでの秘訣は、印刷したいものを正しく表すドキュメントをMSApp.getHtmlPrintDocumentSource メソッドに提供することです。これは、ページに表示されるものと必ずしも同じではありません。

参照するサンプルは、現在のドキュメントオブジェクトを getHtmlPrintDocumentSource に渡すだけで、最も簡単な印刷方法ですが、お気づきのように、必要な結果が正確に得られない場合があります。

Kraig Brockschmidt の優れた (そして無料の) ebook on HTML and JavaScript Windows Store apps の第 15 章で説明されているように、出力をカスタマイズする簡単な方法は、印刷メディア タイプのメディア クエリを追加し、CSS を使用して出力を変更することです。ページ、次のように:

@media print {
    .win-backbutton {
        display: none;
    }

    .watermark {
        display: none;
    }

    .titlearea {
        font-size: xx-large;
    }
}

ただし、これで直面している問題が解決される可能性はありません。あなたの場合、おそらく最もうまくいくのは、より印刷しやすい出力を提供する別のページを作成することです。

例として、印刷コントラクト サンプルのシナリオ 4 に基づいて、print.html という HTML ページをアプリのルートに配置すると、次のコードを使用して参照できます (ms-appx:/// スキームに注意してください)。 、これは私のアプリ パッケージのコンテンツを指します):

// set the alternate content 
var alternateLink = document.createElement("link");
alternateLink.setAttribute("id", "alternateContent");
alternateLink.setAttribute("rel", "alternate");
alternateLink.setAttribute("href", "ms-appx:///print.html");
alternateLink.setAttribute("media", "print");

document.getElementsByTagName("head")[0].appendChild(alternateLink);

これで、デバイス チャームが呼び出されると、現在のページではなく、別のコンテンツ ページが印刷用のソースとして提供されます。代替ページに JSON ソースからコンテンツをロードし、印刷に適した方法でレンダリングすることができます。これは、コンテンツがページに表示される方法とは異なる場合があります。

Windows ストア アプリ開発の詳細については、Generation Appに登録してください。

于 2013-02-19T17:18:48.507 に答える