Error Handling for sap.m.PDFViewer

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;

		}

Leave a Reply

Your email address will not be published. Required fields are marked *