Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Jacky_Liu
Product and Topic Expert
Product and Topic Expert
In my blogs Configure the SAP BTP Cloud Foundry Environment Subaccount with SAP Forms Service by Adobe and Test ..., I have explained configuring ads and testing ads rest api with postman . I have received many queries about this blog . One question is how to use  SAP cloud sdk to call  ads rest api to render pdf document .

I assume you have installed  nodejs ,yeoman. If you have not installed yeoman, you can use the following  command to install it .

npm install -g yo



Also suggest you instll generator-saphanaacademy-mta with the folowing command :

npm install -g generator-saphanaacademy-mta



You have install cloud foundry cli and  mta tool . For cloud foundry cli,  you can refer the toturial .

For MTA tool, you can install it with :

npm install -g mbt

 

Base on all these prerequisites, today I want to blog the steps on how to use SAP Cloud SDK to render PDF document with BTP SAP Forms Service by Adobe rest API .

The following is the steps :

Step 1 :  Check  SAP Cloud SDK for  Forms Service by Adobe API in API hub  and download API specification .







Step 2 : generate  a mta project with yeoman .





Step 3: use visual code to change the code :




Step 4:  add a folder external under srv and move the downloaed ADS specification file  into folder external




Step 5: Generate a typed client by running the generator


create folder CF_ADSRestAPI under folder external .

rename API specification file to CF_ADSRestAPI.json

add the following line in srv/package.json



,"@sap-cloud-sdk/openapi": "latest"




run the following command:


cd srv

npm install

openapi-generator -t --input external\CF_ADSRestAPI.json --outputDir  external\CF_ADSRestAPI\



Step 6: add the following code to server.js


const {ADSRenderRequestApi} = require('./external/CF_ADSRestAPI/CF_ADSRestAPI/ads-render-request-api')
const { StoreFormsApi } =require('./external/CF_ADSRestAPI/CF_ADSRestAPI/store-forms-api')


app.get('/srv/ads/adsforms', function (req, res) {
if (req.authInfo.checkScope('$XSAPPNAME.User')) {
// res.setHeader()
StoreFormsApi.formGet('labelprint').execute({ destinationName:'ads-rest-api' }).then(data=>{res.status(200).json(data)}).catch(err=>{res.status(200).json(err)});
} else {
res.status(403).send('Forbidden');
}
});
app.get('/srv/ads/render',function(req,res){
if (req.authInfo.checkScope('$XSAPPNAME.User')){

const data = "<form1><LabelForm><DeliveryId>8000311</DeliveryId> <Position>0010</Position> <MaterialNo>M100001</MaterialNo><Quantity>123456.321</Quantity> <Package>P111111</Package><QRCode>01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789</QRCode></LabelForm></form1>"

const bodyE = new Buffer(data).toString('base64')

renderinput = {
"embedFont": 0,
"formLocale": "en_US",
"formType": "print",
"taggedPdf": 1,
"xdpTemplate": "labelprint/PrintLabel",
"xmlData": bodyE
}
const queryP = { templateSource: 'storageName', TraceLevel: 1 }
ADSRenderRequestApi.renderingPdfPost(renderinput,queryP).execute({destinationName:'ads-rest-api' }).then(pdf=>{res.status(200).json(pdf.fileContent)}).catch(err=>{res.status(500).send(err)})



}else{
res.status(403).send('Forbidden');

}

})

Step 7: add the following code to app\resources\index.html



    <a href="https://blogs.sap.com/srv/ads/render"> ads render</a><br />

    <a href="https://blogs.sap.com/srv/ads/adsforms"> ads forms</a><br />


Step 8: build mta file with the following command


cd ..

mbt build



Step 9: login into BTP subaccount with :


cf login



Step 10: deploy  generated mta file with


cf deploy mta_archives\sdkforads_0.0.1.mtar


 

Step 11:  create destination for ads rest api in previouse blog



 

Step 12,  assign role collections to user



 



Step 12, test the deployed application


 




The end .
5 Comments