2015-04-22 34 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,並且文檔將使用標籤打印,例如