iOS经典讲解之UIWebView加载PDF不显示电子签章解决方案

iOS平台PDF阅读器开发指南 本文还有配套的精品资源,点击获取 简介:开发iOS平台的PDF阅读器是常见的开发需求,特别是使用Xcode 4.4及以上版本提供的WebKit框架和UIWebView组件。本文介绍了如何利用这些工具实现PDF加载、交互功能和自定义阅读器,并讨论了性能优化与安全性。文章强调了WKWebView作为UIWebView的替代方案,以及PDFKit和其他第三方库在实现高级PDF功能... 阅读详情

一、对于iOS 12系统可直接使用WKWebView 加载pdf url 即可,便会显示电子签章,WKWebView是从 iOS 8.0 和 OS X 10.10 开始的;

二、对于iOS 12以下版本,有其他的解决方案:

iOS版本 < 12的情况可以使用PDF.js:

PDF.js可以实现在html下直接浏览pdf文档,是一款开源的pdf文档读取解析插件,非常强大,能将PDF文件渲染成Canvas。PDF.js主要包含两个库文件,一个pdf.js和一个pdf.worker.js,一个负责API解析,一个负责核心解析。 

pdf.js是火狐浏览器的开源项目,地址为:  http://mozilla.github.io/pdf.js/

下载Build,包括build、web两个文件夹,这是我们需要的:

 把文件复制到工程文件夹,然后拖到工程中,注意不要选Create group

加载实例: 

NSString *filePath = @"xxx.pdf";
NSString *viwerPath = [[NSBundle mainBundle] pathForResource:@"viewer" ofType:@"html" inDirectory:@"minified/web"];
NSString *urlStr = [NSString stringWithFormat:@"%@?file=%@#page=1",viwerPath,filePath];
urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
[web loadRequest:request];

注意:

1、一定使用UIWebview加载;

2、 跨域加载,大多数情况是加载服务器远程pdf文档,此时会加载失败,找到viewer.js文件将判断注释掉即可;

// if (fileOrigin !== viewerOrigin) { 
// throw new Error('file origin does not match viewer\'s'); 
// } 

3、将 viewer.js的 var DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf'; 默认路径删掉,改为var DEFAULT_URL = '';

4、默认是不显示电子签章、签名的,若需要,将worker.js文件中的相关代码注释;

if (data.fieldType === 'Sig') { 
//WGZ 
//warn('unimplemented annotation type: Widget signature'); 
//this.setFlags(AnnotationFlag.HIDDEN); 
}

5、如果需要修改加载页面的布局样式,或者隐藏下载按钮等,把viewer.html文件中相关代码注释掉,或者修改相关属性即可 。

学生党投稿Applied Soft Computing:从导师账号登录到通讯作者设置的全流程解惑 本文详细解析了学生投稿Applied Soft Computing期刊的全流程,重点介绍了导师账号登录、通讯作者设置、作者排序调整以及开放获取费用等关键环节的避坑技巧。针对LaTeX稿件处理和财务选项选择提供了实用建议,帮助学生顺利完成SCI期刊投稿。 阅读详情

相关推荐

基于STM32F103C8T6的红外循迹避障小车

编程思路:控制核心板IO口的电平(即电机驱动模块的AIN1,AIN2,BIN1,BIN2)从而控制AO1、AO2、BO1、BO2的电平高低,进而控制电机使其正转、反转、不转。由于单纯地拉高拉低电平只能让电机在转与不转的状态切换,故决定利用TIM4的两个通道分别产生两路PWM信号来控制电机速度,四个电机两个一组,同一侧的两个连接在同一个PWM上。(#include "dianji.h"文件中同时写了对循迹模块引脚的初始化)

weixin_48743503的博客 1万+

WebView打开pdf文件时,不能展示里面的电子签名和电子印章

React-native项目 切换到了WKWebView 但是只支持IOS12以上的版本 适配ios12以下的尝试用了react-native-pdf

qq_34823218的博客 1081

RV1126B SDK移植实战:从DDR配置到USB烧写全解析

本文详细解析了RV1126B SDK移植的核心实战流程,重点攻克了DDR初始化失败与USB烧写两大难题。文章从理解启动流程入手,提供了DDR配置错误的排查步骤、SDK编译配置要点,并深入讲解了USB烧写的完整操作与常见问题解决方案,旨在帮助开发者高效完成系统移植与稳定运行。

weixin_29164497的博客 542

PDF.JS在线预览pdf出现跨域问题和Failed to fetch错误

Uncaught (in promise) Error: 载入 PDF 时发生错误。Failed to fetch错误,且加载PDF地址时出现跨域问题。:使用viewer.html预览pdf的时候,出现下面错误❌。报错暂时解决,但是又会出现另外的错误❌,偶现。:注释viewer.js文件中的代码。

qq_38348311的博客 4596

FPGA新手避坑指南:手把手教你搞定RTL8211千兆网PHY的时序配置(附Verilog代码)

本文详细解析了FPGA与RTL8211千兆网PHY芯片的时序配置问题,重点介绍了TXDLY/RXDLY引脚设置、FPGA发送端和接收端的Verilog实现,以及调试与验证的完整流程。通过硬件电路设计和代码示例,帮助开发者解决网络连接不稳定、丢包等常见问题,提升千兆网通信的稳定性。

weixin_28732953的博客 542

sentaurus学习笔记(VDMOS仿真)(三)

在Sentaurus中,这通常意味着在2D仿真中,x轴指向下,y轴指向右。定义了在2D模拟中,网格尺寸按照一定的增长率进行扩展,这里的增长率为2.0,意味着远离最小尺寸区域的网格单元大小将是最小尺寸的两倍。定义了2D模拟中网格单元的最小尺寸为0.001微米,这有助于控制网格的最小大小,从而影响仿真的精度和计算成本。表示启用中等级别的日志信息输出,这有助于用户了解仿真过程中发生的事件和可能的问题。表示启用保存调试文件,这可以帮助用户在仿真过程中检查和验证模型的状态。这行代码设置了仿真过程中使用的线程数。

qq_52640792的博客 1807

关于解决WKWebView不能显示网页PDF文件的实战

测试提了这样的一个bug,就结合项目开始搜索相关资料终于找到了解决方案: 直接上代码: 添加WKWebView的代理方法 - (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)...

FreeTourW的博客 4159

Quartus Prime器件库安装实战:从版本选择到权限避坑指南

本文详细介绍了Quartus Prime器件库的安装全流程,从版本选择、精准下载到权限设置和安装验证。重点解析了版本匹配的黄金法则、管理员权限的必要性以及安装路径的最佳实践,帮助用户避开常见陷阱,确保器件库安装一次成功。

weixin_33713707的博客 515

webview加载pdf签章无法显示问题

最近在webview中加载pdf链接的时候签章加载不出来,于是就网上搜了很多相关的文章,最终解决了这个问题,下面为了防止各位同学因为碰到类似的问题踩坑,做下归纳。 UIWebView 加载pdf签章是始终无法显示的 WKWebView 在iOS12以后是可以加载签章的。 因为公司项目比较老,我这边统一用的UIWebView去加载pdf,具体实现如下(注:PDF.js只支持UIWebVi...

u014380815的专栏 3191

AI 学术科研与论文写作的正确打开方式!不套提示词模板,靠这个思路完美实现人机共创

真正的“人机共创”,也就是AI引导我思考的过程,如果你想用你的模糊需求,去写出专业化的学术内容,那是不可能的。对想快速完成某些学术任务的同仁来说,我们完全不用去抠提示词的细节,直接用魔法打败魔法,设计一段优化提示词的结构化提示词(提示词架构),辅助优化你的模糊需求。创建好之后,可以对它提你的任何模糊学术需求,比如写论文、写综述、学术润色等等,它绝不会直接帮你生成,而是先搞懂你的真实意图。以上整个流程,完全没有一句废话,先是思考,再是向你提问弄懂你的意图,最后整合你给出的关键信息,直接优化你给的模糊需求。

智能AI让学术科研更容易 478

数据本体论如何指导数仓建模?

数据本体论指导数仓建模的核心在于构建业务语义与数据结构的桥梁。该方法从业务域中抽象标准化知识体系,包含核心概念、属性、关系和规则五大要素,并将其映射为分层数仓模型。通过"业务本体梳理→本体建模→模型映射→治理迭代"的流程,实现数仓从"结构存储"到"语义载体"的升级。相比传统建模,该方法能解决语义不一致、跨域融合难等问题,使数仓具备更好的可扩展性和业务对齐性。实践表明,以数据本体论为指导的数仓建模能显著提升数据资产的可理解性和复用价值。

石榴姐yyds 395

PDF.js访问远程服务器报file origin does not match viewer's

下载PDF.js(会附带下载资源) 后面会附带下载地址,其中包含两个文件夹build和web文件夹,build文件夹是PDF.js核心文件,web下为展示PDF的视图界面viewer.html; 在项目中要在线预览PDF,进行以下步骤: 方法1: 新建一个html页面,在页面中使用iframe标签,通过iframe标签嵌套viewer.html,如果是只加载本地文件,在viewer.js修...

fuzhongbin的博客 2万+

【ComfyUI】Wan2.2 Rapid-AIO-Mega 二次元文生视频

通过 SD3 采样体系与 Wan 系列专用的 **WanVaceToVideo** 视频生成节点,整个流程从模型加载、文案编码、潜空间采样到视频合成一气呵成,能够稳定输出画面精致、角色统一、光影氛围鲜明的动态画面。这套工作流重点整合了视频长度、帧率、分辨率等核心参数控制,并结合 KSampler 的细节生成能力,旨在让用户能在 ComfyUI 中快速生成高质量的二次元叙事视频。

Mr数据杨 1983

使用PDF.js预览文件老是报错Message: file origin does not match viewer‘s_otherError @ app.js:1140怎么办??

这个web/app.js文件。这个报错真是要人命!

我驾驶汽车从不是为了从A点到达B点,我喜欢去感受汽车,与之交流,与之融为一体。 2542

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

pdf.js引用时报错:file origin does not match viewer‘s

在文件中找到viewer.js文件。

Miraitowat的博客 1355

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

file origin does not match viewer's

使用pdf.js时,当有跨域的问题时,会加载失败,错误信息为file origin does not match viewer's。 修改起来简单粗暴。 直接注释掉web/viewer.js中的1564到1566这几行,不去判断跨域即可。 if (origin !== viewerOrigin &amp;&amp; protocol !== 'blob:') { throw new...

指南针的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

pdf.js 远程预览pdf文件 Error: file origin does not match viewer's

解决办法: 修改viewer.js 找到: if (origin !== viewerOrigin && protocol !== "blob:") { throw new Error("file origin does not match viewer's"); } 将这段代码注释: ...

datouniao1的博客 3910

工作学习总结-pdf.js的踩坑和运用

周末了,终于有这么一整段的时间去总结整理了,这个月很忙,需求很多,年龄不小了,生活中个人的事情也不少。时间是最公平的,因为每个人每天都是过这么长时间,好好珍惜每一分。好了,不感慨了。进入正题吧。 先说一下项目结构:angular5.0 + ionic3.0 这个月做了一个pdf展示的需求,后台小伙伴传过来一个pdf格式的url,这个url长这样: url = ”https://sg.ibs.bai...

时清云的博客 4160

VUE3中使用PDF.js实现二进制转PDF预览功能

Vue3+pdf.js实现二进制流转PDF文件,在线预览功能

weixin_71146793的博客 1476

PDFJS实现在线预览

注意:标注出来的是下载后完整的pdf-reader-master,只不过根据实际项目将vierwer.html挪了一下位置。DEFAULT_URL:pdf格式的文件地址。TITLE:自定义标题。

colin's blog 807

pdfjs file origin does not match viewer‘s

这个问题怎么解决呢 参考我们的使用pdfjs viewer.html渲染自己的pdf_e78com5959ws77的博客-优快云博客 完美渲染 基础交流群799827663

e78com5959ws77的博客 418

web页面展示pdf,pdf.js的使用,解决跨域问题

一、下载地址 http://mozilla.github.io/pdf.js/getting_started/#download 下载稳定版 二、文件说明 1、下载解压后文件内容如下 2、直接打开viewer.html,加载出来的是空白的,pdf没有加载出来 ...

jxyang95的博客 7355

一篇文章教你使用 PDF.JS 在线预览 PDF (本地文件,服务器文件)

前言   最近开发项目时有个需求是在线预览 PDF 文件,然后百度了好久选出来一个功能比较强大并且好用的插件 PDF.JS,GitHub 下载地址(不知道最近咋了每次都想唠一会水一会)差点忘了说了,本文主要是讲使用过程中的常见错误,嗯,次要是讲咋使用 安装   下载版本的话我们下在稳定版本的就可以了,没必要非追求最新版,当然也可以下载最新版本的,用法都一样,下载好了之后就找一个位置解压就可以了,或...

平凡的人类的博客 2万+

Android解决使用PDF.JS在线浏览PDF跨域问题

现在网上有很多关于PDF.JS的相关资料了,我在项目中也遇到了一个需要在线浏览PDF文档的需求,刚开始百度知道了PDF.JS存在,就直接拿来用了,浏览本地文件OK,但是浏览网上的PDF文件就会抛出异常“file origin does not match viewer’s”,这个问题刚开始困扰很久,也没有解决,后面是实在没办法,只有去看viewer.js的源码了,源码太多,看得我眼花啊。。 直...

weixin_45633148的博客 1355

HTML在线查看pdf格式文档,利用viewer.js插件实现。

HTMl实现在线显示pdf格式文档,第一次接触这个插件,慢慢摸索查资料才实现该功能。实现过程还遇到了bug。 首先获取文件的路径。 获取文件路径就有了新的问题:(1)你的文件路径是否在同一个服务器。(2)如果你的文件是存在本地路径,则需要在你的项目配置一下虚拟路径,不然利用插件是找不到文件的位置的。 配置虚拟路径 本人是用SpringBoot框架,所以配置是根据SpringBoot框架配置的,如...

weixin_44145585的博客 1532

java pdf背景_使用pdf.js显示透明背景的pdf

我有一个4页的pdf,每个页面都有一个透明的背景 . 我使用pdf.js来显示它们,但我想在我的html页面上用透明背景显示它们但我无法弄清楚我是如何做到的,总是有一个白色背景:我认为根据this issue是可能的,但是当我将行 page.render(renderContext); 更改为 page.render({renderContext, viewport, backgroundColo...

weixin_39717692的博客 827
上一篇: iOS经典讲解之Xcode10打开旧项目报错解决方案
下一篇: iOS经典讲解之通过setValue: forKeyPath:设置属性(iOS 13不支持该方式修改私有属性!!!)
刘新林
博客等级 码龄11年 72粉丝 61原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值