sap.m.PDFViewer – Embedded
<!--PDF Viewer - Embedded-->
<!--pdfLoadError=The PDF file cannot be loaded.-->
<PDFViewer source="<LINK>" title="<TITLE>" error=".onPDFError">
<errorPlaceholder>
<MessagePage showHeader="false" text="{i18n>pdfLoadError}" icon="sap-icon://error"/>
<!--MessagePage description is set in the controller-->
</errorPlaceholder>
</PDFViewer>
sap.m.PDFViewer – Popup
//PDF Viewer - Popup
//pdfTitle=MyPDF.pdf
//pdfLoadError=The PDF file cannot be loaded.
/**
* @description open the pdf viewer as an popup with an custom errorPlaceholder
*/
openPDFViewerPopup: function() {
var oi18n = this.getResourceBundle(), //only works with generated BaseController.js
sPDFURL = "..../$value";
var oPDFViewer = new PDFViewer({
source: sPDFURL,
title: oi18n.getText("pdfTitle"),
error: this.onPDFError.bind(this),
errorPlaceholder: new MessagePage({
showHeader: false,
icon: "sap-icon://error",
text: oi18n.getText("pdfLoadError"),
description: "" //description is set when an error occurs
})
});
oPDFViewer.open();
}
Error Handling
/**
* @description The method is called when a PDF cannot be loaded.
* Using the {@link convertXMLErrorToErrorMessage} method, the error message is read out and stored in the errorPlaceholder aggregation.
* @param {sap.ui.base.Event} oEvt
*/
onPDFError: function(oEvt) {
var oIFrame = oEvt.getParameter("target"),
oXMLError = oIFrame.contentDocument.documentElement,
sErrorMessage = this.convertXMLErrorToErrorMessage(oXMLError);
oEvt.getSource().getAggregation("errorPlaceholder").setDescription(sErrorMessage);
},
/**
* @description convert xml errordetails to an error string
* @param {object} oXMLError
* @returns sErrorMessage
*/
convertXMLErrorToErrorMessage: function(oXMLError) {
var aErrorMessages = [],
sErrorMessage;
var aXMLErrorDetails = oXMLError.getElementsByTagName("errordetail");
for (var i = 0; i < aXMLErrorDetails.length; i++) {
aErrorMessages.push(aXMLErrorDetails[i].childNodes[1].textContent);
}
sErrorMessage = aErrorMessages.join(" ");
return sErrorMessage;
},
/**
* @description convert xml error to an error string
* @param {object} oXMLError
* @returns sErrorMessage
*/
convertXMLErrorToErrorMessageV2: function(oXMLError) {
var sErrorMessage = oXMLError.querySelector("message").textContent;
return sErrorMessage;
}