gpt4 book ai didi

java - 如何以文本形式运行和下载 BusinessObjects 报告

转载 作者:行者123 更新时间:2023-12-01 15:04:11 25 4
gpt4 key购买 nike

我的问题:如何运行报告并将其下载为文本?在 BusinessObjects 中,您可以将报告下载为纯文本文件。 API 的文档表明您可以下载各种格式的报告。这是如何实现的?

如何将其下载为 PDF:the documentation 中,他们描述了如何将它们下载为 PDF 文件:

ViewSupport pdfViewSupport = new ViewSupport();
pdfViewSupport.setOutputFormat(OutputFormatType.PDF);
pdfViewSupport.setViewType(ViewType.BINARY);
pdfViewSupport.setViewMode(ViewModeType.DOCUMENT);

RetrieveBinaryView retBinView = new RetrieveBinaryView();
retBinView.setViewSupport(pdfViewSupport);

RetrieveData retBOData = new RetrieveData();
retBOData.setRetrieveView(retBinView);

DocumentInformation docInfo = boReportEngine.getDocumentInformation(struid, null, null, null, retBOData);
BinaryView myBOView = (BinaryView) boDocInfo.getView();
byte[] docContents = myBOView.getContent();

当我改变时:

pdfViewSupport.setOutputFormat(OutputFormatType.PDF);
pdfViewSupport.setViewType(ViewType.BINARY);
pdfViewSupport.setViewMode(ViewModeType.DOCUMENT);

pdfViewSupport.setOutputFormat(OutputFormatType.INT_HTML);
pdfViewSupport.setViewType(ViewType.INT_CHARACTER);
pdfViewSupport.setViewMode(ViewModeType.INT_REPORT_PAGE);

我收到以下错误:

org.apache.axis2.AxisFault: Binary view of such a document should be only requested with the use of ViewType.BINARY (WRE 01151)

有趣的是,我将 ViewType 设置为 INT_CHARACTER,而不是 BINARY...

它断线了:

DocumentInformation docInfo = boReportEngine.getDocumentInformation(struid, null, null, null, retBOData);

我想做的事情:这确实很复杂,但我基本上想要一个返回单行的报告,并将其打印在报告上(没有其他内容),然后下载该报告以文本形式报告,因为文本是我在另一个程序中使用的 xml。

任何帮助都会很棒!

<小时/>

注意:我正在 3.2 服务器上运行,但我们很快就会升级到 4.0。因此,如果该解决方案适用于两个版本,那就太棒了,否则 v4 和 v3.x 解决方案也很棒:)

最佳答案

这一行的问题:

RetrieveBinaryView retBinView = new RetrieveBinaryView();

所以我不知道这一切是如何运作的,但这就是您正在寻找的:

ViewSupport viewSupport = ViewSupport.Factory.newInstance();
viewSupport.setOutputFormat(OutputFormatType.INT_XML);
viewSupport.setViewType(ViewType.INT_CHARACTER);
viewSupport.setViewMode(ViewModeType.INT_REPORT_PAGE);

RetrieveData retBOData = RetrieveData.Factory.newInstance();

RetrieveXMLView retXMLView = RetrieveXMLView.Factory.newInstance();
retXMLView.setViewSupport(viewSupport);
retBOData.setRetrieveView(retXMLView);
DocumentInformation boDocInfo = getDocInfo(actions, retBOData);
XMLView bView = (XMLView) boDocInfo.getView();
ByteArrayOutputStream out = new ByteArrayOutputStream(bView.getContentLength());
bView.getContent().save(out);
byte[] reportBytes = out.toByteArray();
String reportInString = new String(reportBytes);

但是,这里的reportInString是表示报告的XML。所以我所做的就是用前缀和后缀封装我想要从报告中得到的内容。因此,举例来说,假设我用 @#$ThisIsWhatYouWant--End$#@ 封装它,那么我将执行以下操作:

Pattern patt = Pattern.compile("(?i)@#$ThisIsWhatYouWant-(.*?)-End$#@", Pattern.DOTALL);
Matcher match = patt.matcher(reportInString);
if (match.find()) {
return match.group(1);
}
return null;

附注这应该适用于 3.x 和 4.0 BO 服务器。

关于java - 如何以文本形式运行和下载 BusinessObjects 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13203828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com