2012-05-18 56 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> 

相关问题