0

我的 html 正文中有一个对象元素来显示导出到 .pdf 文件的活动报告。我需要使用 javascript 将 pdf 自动打印到客户端的默认打印机,然后将 pdf 保存到服务器:

<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("data","test.aspx?PrintReport=yes&SavePDF=yes&AccNum="+AccNum);

有谁知道如何动态设置数据属性以传入查询字符串?

谢谢,

4

3 回答 3

0
 var pdfObj = document.getElementById('pdfDoc');
 pdfObj.data="test.aspx?PrintReport=yes&SavePDF=yes&AccNum="+AccNum;
于 2012-05-18T21:28:57.197 回答
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>

于 2012-09-13T05:24:11.240 回答
0

就数据属性而言,您做的一切都很好。以下是一些示例:http: //jsfiddle.net/3SxRu/

我认为您的问题可能更多与执行顺序有关。你的实际代码是什么样的?你是在写身体onLoad功能还是什么?

另外,我假设使用该data属性是一项要求。HTML5 定义data-*. 这个属性不是真的有效。同样,也许您的系统需要它。

于 2012-05-18T21:46:32.910 回答