云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

阿里云_oracle数据库sql语句_高性能

小七 141 0

最近,我需要在SAP云平台上的"SAP Forms by Adobe"服务中使用REST服务呈现PDF。虽然我能够使用adoberest服务实现PDF的呈现,但该服务一次只能呈现一个PDF。但是,我的最终用户希望输入文档编号,并将与该文档相关的所有PDF作为一个合并PDF查看(表单的类型将由用户从UI5应用程序中选择)。由于应用程序完全构建在XS HANA上的云中,没有连接到任何SAP ECC后端或SAP S4系统,我无法使用标准的ABAP方法来合并生成的PDF。

我找到了解决此问题的替代方法,并考虑与更广泛的SAP社区共享,希望这能有所帮助。

在这篇博客文章中,我将展示如何在SAP云平台Neo上将以base64格式编码的多个PDF合并为一个合并的PDF,而无需连接ABAP后端系统的分步过程。我将在一个开源库的帮助下演示使用Javaservlet的合并功能。最后,我们将向UI5应用程序公开Javaservlet并查看合并的PDF。

以下是设置所需的先决条件,

请按照下面的链接设置eclipse,

https://developers.sap.com/tutorials/hcp-java-eclipse-setup.html

合并SAP云平台上的PDF,我将使用本地导入javaservlets的开源库。为了演示,我将使用PDFBox库。ApachePDFBox是一个开源的纯Java库,可以用来创建、呈现、打印、分割、合并、更改、验证和提取PDF文件的文本和元数据。

如前所述,我将使用PDFBox来实现此功能,我将从他们的官方网站下载相同的功能。另外,要解析作为有效负载发送到Servlet的JSON对象,我将使用一个简单的json1.11库。

您可以通过简单的Google搜索下载这些库。或者,您也可以在Maven项目的帮助下添加依赖项。

要创建基于SAP云的Java应用程序,请转到"文件">"新建">"动态Web项目"

提供项目名称,此项目名称将成为您的URL的一部分,积分返现,然后单击"完成"。另外,不要忘记将服务器添加到目标运行时。

一旦单击"完成",您将创建一个具有预定义结构的新项目。解释生成的每个文件和文件夹的功能不在本文的范围内。但是,你可以很容易地在网上找到这些信息。

到目前为止,我们已经做了一个Java Web项目。下一步是创建一个Servlet类。

右键单击Java资源,然后单击New>Servlet

给出类名、包名并单击Finish

一旦单击Finish,将使用预定义的方法和Servlet配置创建一个Java类文件。

请确保在其他项目上配置了服务器Java源代码将在Servlet类上抛出错误。

由于我们将以JSON格式发送请求作为UI5应用程序的POST HTTP方法的有效负载,云产品,因此我们必须解析正文并从中读取单个PDF内容。

示例有效负载请求:

让我们在eclipse中创建一个静态方法来读取Servlet接收的POST请求。此方法以流的形式读取正文,然后在字符串生成器的帮助下将正文构建回字符串。

最后,我们将字符串正文解析为JSON对象,得到以base64格式编码的PDF数组。

为了将PDF数组合并成单个PDF,我们在Servlet中创建了另一个静态方法。此方法将创建PDFBox库的PDFMergerUtility类的实例。在这个类的帮助下,大数据好吗,将目标设置为ByteArrayOutputStream的一个实例。

发布这个,循环上一步接收到的PDF对象数组,并使用addSource方法添加每个PDF对象。

最后,在mergeDocument的帮助下合并所有PDF文档,并将输出分配给先前设置为目标的OutputStream。

最后,以JSON格式将响应发送给请求者。

您可以在先前配置的Web服务器上本地测试Java应用程序。一旦我们对结果满意,我们将继续在SAP云平台上部署应用程序。

右键单击您的项目,选择导出>WAR文件。点击后提供WAR文件应存储在本地计算机上的路径。

转到SAP云平台租户,点击Java应用程序并按导入应用程序。

从本地计算机导航到WAR文件。导入后,SCP应用程序将生成一个URL。您可以使用您选择的任何第三方Web应用程序(如PostMan)独立测试此URL。

一旦您对结果感到满意,您可以继续并将其与UI5应用程序集成。

在这一部分中,我们将创建在UI屏幕上合并多个PDF并显示结果的方法,

要将Java servlet消费到SAPUI5应用程序中,云服务市场,请使用Fileuploader创建一个SimpleForm来上载文件。将上传的文件转换成Base64格式,

将文件对象从前端视图传给控制器,然后调用下面的函数得到base4格式的文件。请注意,此函数异步运行并使用承诺,IE11不支持。或者,可以使用回调来实现类似的功能。

将从上一个函数接收的Base64格式的PDF内容传递给下面定义的函数。

此函数首先准备好要传递给Java应用程序/Servlet的输入有效负载,然后进行AJAX调用以获得响应。

步骤2:在SAPUI5上显示PDF

最后一步是将这个Base64 PDFContent加载到UI5应用程序并显示相同的内容。同样的,请参考下面的函数,

运行应用程序,添加任意两个PDF文件,并查看运行中的代码。

最后,您会看到一个弹出窗口,物联网展,其中呈现了合并的PDF,