1

我有以下问题:

我目前正在使用一种软件(MicroStrategy,BI),它具有将报告导出为 pdf 的功能,它的工作原理如下:

每个报表都有一个唯一的 ID,因此您选择要导出的报表,并使用 jsp 将此报表的 ID 发送到导出工具,它会生成一个完整的 URL,其中包含 MicroStrategy 服务器将读取以生成 PDF 的一些参数。

我正在尝试捕获此 pdf url 并将其发送到 Java 方法,该方法将将此 pdf 保存在硬盘驱动器中,而不向用户提示任何内容。

我的问题是该 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

您为什么不将报告/文档默认保存为 PDF 格式,这样当您打开报告时,它会自动以 PDF 格式生成。

如果您不喜欢将报告保存为 PDF 的想法(例如,因为您还需要它作为常规报告并且您不想维护同一对象的两个版本),您可以使用 URLAPI 生成 PDF 使用&executionMode=3&currentViewMedia=32

不确定这些参数,找出它们的最佳方法(除了一些 MicroStrategy TN)是以 PDF 格式导出报告并检查 url。

于 2013-10-17T14:52:44.537 回答
0

您的主要问题是您正在调用getSrc,而不是将其传递给setTimeout( 您实际上是在传递nullsetTimeout,除非第二次调用getSrc碰巧起作用,在这种情况下,您传递的是一个字符串,该字符串setTimeout由于“语法错误”而无法处理。

相反,在 .setTimeout(getSrc,5000);之后使用 - 没有括号getSrc。这将传递函数,而不是其结果。

另外,currentUrl.substr(length-5)是错误的,部分原因length是未定义(您需要currentUrl.length在其中),部分原因是您需要-4获取最后四个字符。

于 2012-03-28T09:04:36.603 回答
0

我不知道您对 MicroStrategy 有什么样的访问权限,但是有一个 MicroStrategy java api 可以让您在不捕获 url 的情况下执行文档并获取 pdf。查看他们的知识库以获取示例。

于 2012-05-12T07:11:23.637 回答