2015-04-22 35 views
0

我想知道是否可以将iframe内容另存为.xps/.pdf格式而无需用户交互。将iframe内容保存为.xps/.pdf格式而无需用户交互

目前,我的编码能够跳过打印对话框并选择默认打印机。但是,它不能绕过另存为对话框。

有没有人有一些建议来解决这个问题?

浏览器:IE 9(不支持HTML 5)

的Javascript:

function PrintDoc() 
{ 
    var TestPrint = null; 
    TestPrint = this.document.frames['iframecontent']; 
    if(TestPrint) //verify the content isn't empty or null 
     TestPrint.bypassprint(); 
} 

的VBScript:

Sub bypassprint() 
    call WB.ExecWB(6, 2) //bypass printer dialog box 
    call Wb.Dispose() 
End Sub 

HTML:

<input type="submit" name="Submit" value="Print" onclick="javascript:PrintDoc();" id="btnSubmit" class="Btn" /> 

假设我有一个id =“iframecontent”的iframe标签,并且我希望在没有用户交互的情况下将iframe内容打印为.xps/.pdf格式。

上述代码能够绕过打印机对话框,但不能通过另存为对话框。

给出的,将不胜感激:)任何建议

回答

0

服务器端解决方案:首先 :获取HTML,然后将它传递到可以从它创建一个PDF组件,瞧;-)

http://www.codeproject.com/Questions/334862/HTML-to-PDF-in-VB-NET-or-CS-NET

客户端解决方案: 这有点困难,浏览器不允许您在没有用户交互的情况下生成pdf。但是:您可以将html文档发送到一个API(您创建它),然后发送一个url,您可以在其中下载生成的pdf。 do window.open(downloadUrl)和用户在没有进一步对话的情况下下载PDF。

对于从HTML创建PDF看到服务器端解决方案;-)

+0

感谢您的快速回复。从您的答案,我可以得出结论,它需要下载生成的.pdf文件,以绕过用户交互?如果我希望保存到特定的目标文件夹(如“C:\”),该怎么办? –

0

客户端解决方案:你可以使用jsPDF库https://parall.ax/products/jspdf

这是你可以在文档中读取的最简单的例子:

var doc = new jsPDF(); 
// We'll make our own renderer to skip this editor 
var specialElementHandlers = { 
    '#editor': function(element, renderer){ 
    return true; 
    } 
}; 

// All units are in the set measurement for the document 
// This can be changed to "pt" (points), "mm" (Default), "cm", "in" 
doc.fromHTML($('#render_me').get(0), 15, 15, { 
    'width': 170, 
    'elementHandlers': specialElementHandlers 
}); 

其中'render_me'是您要导出的部分。

+0

感谢您的建议。我提醒jsPDF库。但我认为它可能无法完全支持IE 9,因为它是用HTML 5编写的。 –

+0

我必须仔细阅读。然后,您将需要一个服务器端解决方案。但是,你可以做一个完整的回发,使用PageMethods – Caveman

+0

我试图将iframe的内容传递给**服务器端**,它可以**另存为** .xps /。没有用户交互的pdf。但是,它无法呈现HTML,并且文档将使用标签打印,例如