SAP UI5 加载本地并不存在的 PDF 文件的错误处理

简介: SAP UI5 加载本地并不存在的 PDF 文件的错误处理

这个 _onLoadListener 函数什么时候注册的呢?

b6ddb5d4a4a2350dff936b73ef52eb83.png

iframe 完成加载之后,就触发这个 load 事件注册的处理函数:

616361ee6edac78dd71d5be7c375a97b.png

PDFViewer.prototype.onAfterRendering = function () {
      var fnInitIframeElement = function () {
        // cant use attachBrowserEvent because it attach event to component root node (this.$())
        // load event does not bubble so it has to be bind directly to iframe element
        var oIframeElement = this._getIframeDOMElement();
        oIframeElement.on("load", this._onLoadListener.bind(this));
        oIframeElement.on("error", this._onErrorListener.bind(this));

load 事件:

cf6ff0ba9343fe8005a40b3b5b0cbc6b.png

application/pdf 是支持的 mime type:

b1ac34941b73df63664c71e01fc6622e.png

判断浏览器是否支持直接查看 pdf 文件的方法:

9b261b0773e833c86f1e2902244a57b8.png

d1596e1949a4b7f0377f07fd6c7363b7.png

点了 loading errors 之后,bContinue 标志位为 false,因为此时 oTarget[0].contentWindow.document.embeds 为空:

ad25c10aa955e1fe0322ae0ea7d51bc2.png

所以进入此处的 else 分支:

0deefd191f14b36c381f71a5b7b5edfe.png

PDFViewer.prototype._renderErrorState 里,把下载按钮设置为 disabled:

47e91feb1c5172748d0e9f65dfa6f0ce.png

在函数 PDFViewerRenderer.renderPdfContent 里:

94c7e9eca5040f816d6a72efc462f4ba.png

进入 else 分支。

拿到 ErrorPlaceHolder:

bd7fc66d3f838016e316570b24ad190e.png

读取的是 null:

3eafd7a0875fbb851d7fa5e5b18542af.png

这个属性是从哪里读取的呢?

d6503d1b79d8400841def896dca3d683.png

d42d97d844ac4adb42b549c499bbbec4.png

从这个 https://sapui5.hana.ondemand.com/resources/sap/m/messagebundle_en_US.properties 文件里读取。

在这个方法里读取:

1d5e82ad66b1ae387f6f9c94228b93dd.png

this.renderErrorContent(oRm, oControl);

这个方法的名称是动态植入的:getPlaceholderMessagePageControl

34574c34cd38cd6a0a2d9714744fa6a3.png

当 PDF 查看器嵌入到 sap.m.IconTabBar 控件中时,切换选项卡时可能无法重新加载 PDF 文档。 要解决此问题,可以执行以下任一操作:


  • 当用户在选项卡之间切换时,将 PDF 查看器的可见性设置为 false。
  • 每次用户导航到不同的选项卡时,从 DOM 中删除 PDF 查看器 iframe 元素。 可以通过调用 sap.m.PDFViewer#invalidate 方法删除 PDF 查看器元素。


用户可用的辅助功能可能会有所不同,具体取决于安装的 Adobe Acrobat Reader 版本。

该控件支持的几种 displayType:sap.m.PDFViewerDisplayType


  • 如果设置为 link,PDF 查看器将显示为带有下载按钮的工具栏,可用于下载 PDF 文件。
  • 当调用 #open 方法时,用户可以在新选项卡中打开 PDF 文件或下载它。
  • 如果设置为嵌入式(embedded),PDF 查看器将嵌入父容器中,并显示 PDF 文档或由 errorPlaceholderMessage 属性定义的消息。
  • 如果设置为 auto,PDF 查看器的外观取决于所使用的设备:

(1) 在移动设备(手机、平板电脑)上,PDF 查看器显示为带有下载按钮的工具栏。


(2) 在桌面设备上,PDF 查看器嵌入在其父容器中。

相关文章
|
2天前
|
索引 Python
PDF文件页面提取操作小指南
PDF文件页面提取操作小指南
20 4
|
2天前
|
Python
Python对PDF文件页面的旋转和切割
Python对PDF文件页面的旋转和切割
10 3
|
2天前
|
计算机视觉 Python
Python操作PDF文件
Python操作PDF文件
10 1
|
4天前
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
14 2
|
4天前
|
人工智能 计算机视觉 Python
ChatGPT编程省钱、方便小示例——实现PDF转成PNG文件
ChatGPT编程省钱、方便小示例——实现PDF转成PNG文件
13 1
|
5天前
|
存储 安全 网络安全
Python编程--使用PyPDF解析PDF文件中的元数据
Python编程--使用PyPDF解析PDF文件中的元数据
12 1
|
6天前
|
IDE 开发工具 数据安全/隐私保护
Python编程实现批量md5加密pdf文件
Python编程实现批量md5加密pdf文件
14 0
|
17天前
|
Python
Python办公自动化:提取pdf文件中的图片
Python办公自动化:提取pdf文件中的图片
14 0
|
20天前
pdf文件转化为png照片 (PyMuPDF下面的fitz)
pdf文件转化为png照片 (PyMuPDF下面的fitz)
|
2月前
|
C# 开发者 Windows
WPF与PDF文档:解锁创建和编辑PDF文件的新技能——从环境配置到代码实践,手把手教你如何在WPF应用中高效处理PDF,提升文档管理效率
【8月更文挑战第31天】随着数字文档的普及,PDF因跨平台兼容性和高保真度成为重要格式。WPF虽不直接支持PDF处理,但借助第三方库(如iTextSharp)可在WPF应用中实现PDF的创建与编辑。本文通过具体案例和示例代码,详细介绍了如何在WPF中集成PDF库,并展示了从设计用户界面到实现PDF创建与编辑的完整流程。不仅包括创建新文档的基本步骤,还涉及在现有PDF中添加页眉页脚等高级功能。通过这些示例,WPF开发者可以更好地掌握PDF处理技术,提升应用程序的功能性和实用性。
56 0