Windows runtime 如何使用getHtmlPrintDocumentSourceAsync在HTML/JavaScript Windows应用商店应用程序中打印?

Windows runtime 如何使用getHtmlPrintDocumentSourceAsync在HTML/JavaScript Windows应用商店应用程序中打印?,windows-runtime,windows-store-apps,microsoft-edge,Windows Runtime,Windows Store Apps,Microsoft Edge,我只是想用HTML和JavaScript/WinJS在Windows10应用程序(通用)中打印一些内容 ALL说明MSApp上有一个名为getHtmlPrintDocumentSource的函数 我没有这个,我似乎也找不到任何相关的来源,看看它是否被移动了。我改为使用getHtmlPrintDocumentSourceAsync。这似乎是前者的替代品,但我无法让它工作,而且据我所知,没有关于它的文档 当我运行以下代码(基于文档,但已更新为异步)时: result像我预期的那样使用一些打印设置填充

我只是想用HTML和JavaScript/WinJS在Windows10应用程序(通用)中打印一些内容

ALL说明
MSApp
上有一个名为
getHtmlPrintDocumentSource
的函数

我没有这个,我似乎也找不到任何相关的来源,看看它是否被移动了。我改为使用
getHtmlPrintDocumentSourceAsync
。这似乎是前者的替代品,但我无法让它工作,而且据我所知,没有关于它的文档

当我运行以下代码(基于文档,但已更新为异步)时:

result
像我预期的那样使用一些打印设置填充,但是
content
属性设置为
0
,我猜这就是问题所在。我不能确定,因为没有关于这个函数的文档。我甚至无法使用“getHtmlPrintDocumentSource”运行文档中的几十段示例代码,因为它似乎已经不存在了

除了将
document
发送到异步方法之外,我还尝试了几种不同的创建文档片段的方法。同样的结果

可能没有太大帮助,但在执行上述代码时打开的Windows打印对话框中的消息是:“未发送任何要打印的内容。请打开文档,然后再次打印。”


有什么想法吗?

getHtmlPrintDocumentSource
是Windows 10应用程序中一个不推荐使用的同步API。我们将处理Windows 8和8.1留下的一些文档,以澄清这一点

查看如何在JavaScript中使用
getHtmlPrintDocumentSourceAsync
的示例

代码如下:

//需要在调用打印API之前调用
函数registerForPrintContract(){
var printManager=Windows.Graphics.Printing.printManager.getForCurrentView();
printManager.onprinttaskrequested=onprinttaskrequested;
log(“打印已注册的合同。使用打印按钮打印。”、“样本”、“状态”);
}
//用于保存要打印的文档源的变量
var gHtmlPrintDocumentSource=null;
//用于通过PrintManager API打印的打印事件处理程序。
函数onPrintTaskRequested(printEvent){
var printTask=printEvent.request.createPrintTask(“打印样本”,函数(args){
args.setSource(gHtmlPrintDocumentSource);
//注册打印任务完成事件的处理程序
printTask.oncompleted=onPrintTaskCompleted;
});
}
//打印任务事件处理程序在打印作业完成时调用。
函数onPrintTaskCompleted(printTaskCompletionEvent){
//将故障通知用户
if(printTaskCompletionEvent.completion==Windows.Graphics.Printing.PrintTaskCompletion.failed){
日志(“打印失败”,“示例”,“错误”);
}
}
//在打印之前执行。
var beforePrint=函数(){
//替换为要在打印当前文档之前执行的代码:
};
//打印后立即执行。
var afterPrint=函数(){
//替换为打印当前文档后立即执行的代码:
};
函数printButtonHandler(){
//可选地,打印前后要立即执行的功能可以配置如下:
window.document.body.onbeforeprint=beforePrint;
window.document.body.onafterprint=afterPrint;
//获取要打印的文档源
MSApp.getHtmlPrintDocumentSourceAsync(文档)。然后(函数(htmlPrintDocumentSource){
gHtmlPrintDocumentSource=htmlPrintDocumentSource;
//如果打印合同已注册,则会调用打印体验。
Windows.Graphics.Printing.PrintManager.showPrintUIAsync();
});
}
function onPrintTaskRequested(printEvent) {
    var printTask = printEvent.request.createPrintTask("Print Sample", function (args) {
        MSApp.getHtmlPrintDocumentSourceAsync(document)
            .then(function(result) {
                args.setSource(result);
            });

        printTask.oncompleted = onPrintTaskCompleted;
    });
}