2012-05-18 57 views
0

我在我的HTML正文中有一個對象元素來顯示導出到.pdf文件的活動報告。我需要使用JavaScript來自動打印PDF格式輸出到客戶端的默認打印機,然後將PDF保存到服務器:在HTML中設置對象元素的數據屬性

<script language="javascript" type="text/javascript"> 
     // <!CDATA[ 
     function PrintPDF() { 
      pdf.click(); 
      pdf.setActive(); 
      pdf.focus(); 
      pdf.PrintAll(); 
     } 
     // ]]> 

.... 

<body onload="return PrintPDF();"> 
<form id="form1" runat="server"> 
    <object id="pdfDoc" type="application/pdf" width="100%" height="100%" data="test.aspx?PrintReport=yes&SavePDF=yes"/> 
    </form> 
</body> 

與數據硬編碼對象標籤,一切都沒有問題運行。

現在的問題是,我需要將查詢字符串動態傳遞到此頁面。我試圖設置javsacript中的屬性數據來傳遞查詢字符串。查詢字符串值傳遞成功,但數據屬性似乎沒有設置。我得到一個空白頁面。

pdf.setAttribute( 「數據」, 「Test.aspx文件PrintReport = YES & SavePDF =是& AccNum =?」 + AccNum);

有沒有人有線索我可以動態設置數據屬性來傳遞查詢字符串?

感謝,

回答

0
var pdfObj = document.getElementById('pdfDoc'); 
pdfObj.data="test.aspx?PrintReport=yes&SavePDF=yes&AccNum="+AccNum; 
+0

這個方法我試過。它給了我同樣的結果,因爲我使用pdf.setAttribute ...這意味着它只是給了我一個空白頁面,沒有設置數據.... – user1298608

0

至於數據屬性,你正在做的一切都很好。以下是一些示例: http://jsfiddle.net/3SxRu/

我認爲您的問題可能與執行順序有關。你的實際代碼是什麼樣的?你在寫身體onLoad函數什麼的?

此外,我假設使用data屬性是一個要求。 HTML5定義了data-*。這個屬性不是真的有效。再一次,也許你的系統需要它。

+0

感謝您的答覆。我所擁有的實際上是aspx。在加載頁面的代碼的VB代碼結束時,我會調用我的代碼來加載活動報告並導出,以在對象元素中顯示pdf。然後,一旦PDF被加載到我的對象元素中,PDF就會使用javascript打印出來。當我在vb代碼結束時對參數的值進行硬編碼時,一切正常。但是,一旦我設置爲使用查詢字符串來檢索參數的值。數據屬性未能設置。 – user1298608

0

我懷疑事情發生不按規定。在添加嵌入之前,請嘗試等待窗口的onload事件。

此外,我建議使用像PDFObject這樣的腳本來處理嵌入,因爲它是將PDF嵌入到所有各種瀏覽器的可靠方法。例如,你可能有類似以下內容:

<html> 
    <head> 
    <title>PDFObject example</title> 
    <script type="text/javascript" src="pdfobject.js"></script> 
    <script type="text/javascript"> 
     window.onload = function(){ 
     // First build the link to the PDF raw data ("bits") 
     // getQueryStrings assumes something like http://stackoverflow.com/questions/2907482/how-to-get-the-query-string-by-javascript 
     var queryStrings = getQueryStrings(); 
     var reportNameParamValue = queryStrings["reportName"]; 
     var pdfBitsUrl = "getReportPdfBits.aspx?reportName=" + reportNameParamValue; 

     // just in case PDF cannot be embedded, we'll fix the fallback link below: 
     var pdfFallbackLink = document.getElementById("pdfFallbackAnchor"); 
     pdfFallbackLink.href = pdfFallbackLink; 

     // now perform the actual embed using PDFObject script from http://pdfobject.com 
     var success = new PDFObject({ 
      url: pdfBitsUrl; 
     }).embed(); 
     }; 
    </script> 
    </head> 
    <body> 
    <p>It appears you don't have Adobe Reader or PDF support in this web 
    browser. <a id="pdfFallbackAnchor" href="sample.pdf">Click here to download the PDF</a></p> 
    </body> 

相關問題