1

次の質問があります。

私は現在、レポートをpdfにエクスポートする機能を備えたソフトウェア(MicroStrategy、BI)を使用しています。これは次のように機能します。

各レポートには一意の ID があるため、エクスポートするレポートを選択し、jsp を使用してこのレポートの ID をエクスポート ツールに送信すると、MicroStrategy サーバーが読み取って PDF を生成するいくつかのパラメーターを含む完全な URL が生成されます。

私がしようとしているのは、この pdf の URL をキャプチャし、ユーザーに何もプロンプトを表示せずにこの pdf をハード ドライブに保存する Java メソッドに送信することです。

私の問題は、この URL がすぐには生成されず、時間がかかり、その過程でいくつかのリダイレクトが行われることです。

それで、いろいろ雑談した後、どうすればそのいまいましい URL をキャプチャできますか?

私がやっていることは、PDFをiframeにロードし、検索で見つかったjsコードでURLを抽出し、それをJSP変数に割り当て、PDFのURLを取得したらJavaメソッドを呼び出すことです。しかし、それは機能していません。

JavaScript 関数は次のとおりです。

<script language="text/javascript">
    function getSrc()
    {
        var CurrentUrl = document.getElementById('miframe').contentWindow.location.href;
        if(currentUrl.substr(length-5)==".pdf")
        {
           return currentUrl;
        }
        else
        {
           setTimeout(getSrc(),5000);
        }
    }
</script>

そして、これは私がそれに行う呼び出しです:

<% jsp code
    String currentUrl="<script>document.writeln(getSrc();)</script>";
more jsp code %>

コードの残りの部分は実際には問題なく、通常の pdf URL で試してみると、pdf がディスクに保存されました。

それが理解できることを願っています、そして前もって感謝します!

4

3 に答える 3

0

MicroStrategy へのアクセスの種類はわかりませんが、URL を取得せずにドキュメントを実行して PDF を取得できるようにする MicroStrategy Java API があります。例については、ナレッジ ベースを参照してください。

于 2012-05-12T07:11:23.637 に答える
0

あなたの主な問題は、 にgetSrc渡さずに を呼び出していることですsetTimeout(実際には に渡しnullています。setTimeoutgetSrcsetTimeout

代わりに、setTimeout(getSrc,5000);- の後に括弧を使用しないでgetSrcください。これは、結果ではなく関数を渡します。

また、が未定義であるため (そこに必要)、最後の 4 文字を取得する必要があるcurrentUrl.substr(length-5)ため、間違っています。lengthcurrentUrl.length-4

于 2012-03-28T09:04:36.603 に答える