Windows 8 在Windows 8(HTML+;JS)应用程序中打印从JSON数据源获取的ListView项

Windows 8 在Windows 8(HTML+;JS)应用程序中打印从JSON数据源获取的ListView项,windows-8,winjs,Windows 8,Winjs,我有一个使用HTML和JavaScript构建的Windows8应用程序。它有一个ListView,显示从JSON数据源生成的位置的动态列表 我正在使用此应用程序实现打印功能。打印时,ListView中只有一半的列表显示 如何从ListView打印完整列表,并在内容较大时将其分散在多个页面上?这里的诀窍在于向提供一个文档,该文档正确地表示您希望打印的内容,而不一定与页面上显示的内容相同 您引用的示例只是将当前文档对象传递给getHtmlPrintDocumentSource,这是最简单的打印方法

我有一个使用HTML和JavaScript构建的Windows8应用程序。它有一个ListView,显示从JSON数据源生成的位置的动态列表

我正在使用此应用程序实现打印功能。打印时,ListView中只有一半的列表显示


如何从ListView打印完整列表,并在内容较大时将其分散在多个页面上?

这里的诀窍在于向提供一个文档,该文档正确地表示您希望打印的内容,而不一定与页面上显示的内容相同

您引用的示例只是将当前文档对象传递给getHtmlPrintDocumentSource,这是最简单的打印方法,但正如您所注意到的,可能无法提供您想要的结果

如的第15章所述,定制输出的一种简单方法是为打印媒体类型添加媒体查询,并使用CSS修改页面的输出,如下所示:

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

    .watermark {
        display: none;
    }

    .titlearea {
        font-size: xx-large;
    }
}
然而,这不可能解决您面临的问题。在您的情况下,最有效的方法可能是创建一个单独的页面,提供更方便打印的输出

例如,基于打印合同示例中的场景4,如果我将一个名为print.HTML的HTML页面放在我的应用程序根目录中,我可以使用以下代码引用它(注意ms appx:///scheme,它引用我的应用程序包中的内容):

现在,当调用设备符时,我的备用内容页将作为打印源而不是当前页面提供。您可以让备用页面从JSON源加载内容,并以打印机友好的方式呈现,这可能与页面上显示内容的方式不同

有关Windows应用商店应用程序开发的详细信息,请注册

// 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);