0

.pdf ファイルにエクスポートするアクティブなレポートを表示するために、html 本文に object 要素があります。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>

object タグにデータをハードコードすると、すべてが問題なく実行されます。

問題は、クエリ文字列をこのページに動的に渡す必要があることです。クエリ文字列を渡すために、javasacript に属性データを設定しようとしました。クエリ文字列値は正常に渡されましたが、データ属性が設定されていないようです。空白のページが表示されます。

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

データ属性に関しては、すべてうまくやっています。ここにいくつかの例があります:http: //jsfiddle.net/3SxRu/

あなたの問題は、実行の順序に関係しているのではないかと思います。実際のコードはどのように見えますか?体のonLoad機能か何かを書いていますか?

また、data属性の使用は必須だと思います。HTML5はを定義しますdata-*。この属性は実際には有効ではありません。繰り返しますが、おそらくあなたのシステムはそれを必要とします。

于 2012-05-18T21:46:32.910 に答える
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 に答える