在iPhone程序上读取PDF文件

UIDocumentPickerViewController操作系统自带“文件”app中文件 通过UIDocumentPickerViewController 访问iPhone自带应用“Files(文件) APP”。 前提条件: 1:iOS 系统为11.0及以上 2:Xcode中开启iCloud配置 导入文件功能 NSArray *documentTypes = @[@"com.adobe.pdf",@"public.content", @"public.text", @"public.source-code ", @"public.image", @"public.audiovisual-con 阅读详情

原文地址:http://c.gzl.name/archives/category/cocoa/cview-draw

 

言归正传,怎么在iPhone程序中读取PDF的内容呢?答案是,苹果为我们准备了一个很神奇的framework Q2D(Quartz 2D)。Q2D提供了全套的PDF读取API,接下来我们来看看如果简单的使用Q2D来读取PDF文件:

 

我建立了一个工程叫iPhonePDF, 添加了一个UIScrollView(不知道怎么添加UIScrollView? 添加一个UIView然后把interface上的UIView改成UIScrollView就可以啦…)名为PDFView

看看PDFView里面有什么吧

@interface PDFView : UIScrollView {
 
	NSString *filePath;
	CGPDFDocumentRef pdfDocument;
	CGPDFPageRef page;
	int pageNumber;
}
 
@property (copy, nonatomic) NSString *filePath;
@property int pageNumber;
 
-(CGPDFDocumentRef)MyGetPDFDocumentRef;
-(void)reloadView;
-(IBAction)goUpPage:(id)sender;
-(IBAction)goDownPage:(id)sender;
@end

filePath是储存pdf文件的位置的,得到文件位置就是老话题了:[NSBundle mainBundle]… 后面的会写吧… 不记得了在我博客里面搜索吧

CGPDFDocumentRef是PDF文档索引文件,Q2D是Core Foundation的API,所以没看到那个星星~

CGPDFPageRef是PDF页面索引文件

pageNumber是页码

下面的几个函数其实一看就明了了,翻页的,和刷新页面的。第一个是自定义的getter

然后我们看看m文件里面有用的方法:

@implementation PDFView
@synthesize filePath,pageNumber;
 
- (void)drawRect:(CGRect)rect //只要是UIView都有的绘图函数,基础哟~
{
	if(filePath == nil) //如果没被初始化的话,就初始化
	{
		pageNumber = 10;   //这个其实应该由外部函数控制,不过谁让这个程序特别简单呢
		filePath = [[NSBundle mainBundle] pathForResource:@"zhaomu" ofType:@"pdf"];
                //这里,文件在这里!
		pdfDocument = [self MyGetPDFDocumentRef]; //从自定义getter得到文件索引
	}
 
	CGContextRef myContext = UIGraphicsGetCurrentContext();
        //这个我研究了一段时间呢,不过就照打就可以了
 
	page = CGPDFDocumentGetPage(pdfDocument, pageNumber);
        //便捷函数,告诉人家文档,告诉人家页码,就给你页面索引
 
	CGContextDrawPDFPage(myContext, page);
        //画!
}
 
//此getter可以考虑照打... 都是CF函数,我看到就恶心。
//其实不是很难了,得到文件,转换成URL,然后通过
//CGPDFDocumentCreateWithURL(url)得到文件内容索引
//Ta Daaa~~
- (CGPDFDocumentRef)MyGetPDFDocumentRef
{
	CFStringRef path;
	CFURLRef url;
	CGPDFDocumentRef document;
	path = CFStringCreateWithCString(NULL, [filePath UTF8String], kCFStringEncodingUTF8);
	url = CFURLCreateWithFileSystemPath(NULL, path, kCFURLPOSIXPathStyle, 0);
	CFRelease(path);
	document = CGPDFDocumentCreateWithURL(url);
	CFRelease(url);
	return document;
}
 
-(void)reloadView
{
	[self setNeedsDisplay]; //每次需要重画视图了,就call这个
}
 
-(IBAction)goUpPage:(id)sender
{
	pageNumber++;
 
	[self reloadView];
}
-(IBAction)goDownPage:(id)sender
{
	pageNumber--;
	[self reloadView];
}
@end

我这个是个少半成品的程序呢… 我当时弄了几个PDF测试程序,但是找不到了。不过意思是一样的,剩下的东西由大家来发挥吧,有问题记得留言噢!我有问必答!

java 读取PDF文件中的内容 java 读取PDF文件中的内容 java 读取PDF文件中的内容 立即下载

相关推荐

C++程序读取PDF中的文本

C++程序读取PDF中的文本。Adobe允许你提交PDF文件,提取成文本或HTML后再通过邮件发送给你。但是假如你需要自己提取文本或在程序中加入这个功能的话,需要花费很多时间。也许你还需要对文本应用某些特殊格式(如,添加tab分隔符)以便它们能够导入到Execl中(比如,你需要将PDF文档中包含的表格数据导入到Excel中,这就是编写这段代码的目的)。附件中的程序使用VC6.0编译通过,可以成功的读取PDF文件中的文本。并且保存到一个txt文件中

[iOS]深入理解__bridge - OC对象与C++对象的引用转换

0x0 crash 昨天在iOS Geekers钉钉群里聊到一个问题, 下面的代码会crash: void* a = new char; id ext = (__bridge id)a; crash现场如图: 看看挂的地方: 挂在objc_retain里面: objc_retain的作用是对oc对象做retain用的, 我们对指令做一下

args_的博客 6439

Unidbg逆向阿里系App签名:从环境补全到算法还原实战

在移动安全与协议分析领域,理解应用层签名机制是核心挑战之一。签名算法作为保障通信安全与身份验证的关键技术,其原理通常涉及哈希、加密及密钥协商等基础密码学概念。在Android平台,核心签名逻辑常被加固并隐藏于Native层SO库中,以对抗动态调试与静态分析,这为安全研究和协议兼容带来了技术障碍。Unidbg作为一种基于模拟执行的逆向工程工具,通过模拟ARM指令集和系统调用,允许研究者在脱离真机环境的情况下,可控地执行和调试SO文件,为解决此类问题提供了创新思路。其技术价值在于实现了对加固代码的确定性分析与算

weixin_42525738的博客 939

Java 读取PDF文本内容

本文将介绍如何在Java应用程序中读取PDF文件的文本内容。(读取图片也支持,参考这篇文章Java 提取PDF文档中的图片) 在Java应用程序中读取PDF,我们可以借助第三方PDF控件,本文所使用的控件是免费Java PDF组件Free Spire.PDF for JAVA。 在使用以下代码前,你需要下载Free Spire.PDF for JAVA包并解压缩,然后从lib文件夹下,导入Sp...

Eiceblue的专栏 3万+

ERA5数据驱动WRFV4.4实战:单层嵌套配置与关键报错排查指南

本文详细介绍了使用ERA5再分析数据驱动WRFV4.4模式进行单层嵌套模拟的完整实战流程。内容涵盖从数据精准下载、WPS前处理配置、WRF核心参数设置到高频报错的深度排查与解决方案,旨在帮助初学者在有限服务器资源下,高效完成WRF模拟并规避常见陷阱。

q5r6s7的博客 770

cocos creator接入微信登陆sdk ios篇

cocos creator接入微信登陆sdk ios篇 背景已经在Android篇里面交代过了,有兴趣的朋友可以再看看Android篇 步骤 去微信开放平台下载ios平台所需要的sdk 在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id 在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin 将SDK文件中...

凤小鹿的博客 6362

java读取pdf_用Java读取pdf中的数据

用Java简单的读取pdf文件中的数据:第二步:写个简单的读取pdf文件的程序。(PdfReader.java)import java.io.File;import java.io.FileOutputStream;import java.io.OutputStreamWriter;import java.io.Writer;import java.net.MalformedURLExceptio...

weixin_31133021的博客 1530

Dr_can Kalman Filter学习笔记(一)

本文是在b站Dr_can的卡尔曼滤波课程学习过程中的学习笔记

苏大侠的博客 1051

在iPhone程序上读取PDF文件 (rev0.1 ^-^;)

33AB95711CC2022ECCABAA63A7224B7CB9E66D32C8E47ECECF8833DE15DE73A76 归正传,怎么在iPhone程序中读取PDF的内容呢?答案是,苹果为我们准备了一个很神奇的framework Q2D(Quartz 2D)。Q2D提供了全套的PDF读取API,接下来我们来看看如果简单的使用Q2D来读取PDF文件: 我建立了一个工程叫iPhonePD

handnotes的专栏 607

运放比较电路分析以及应用

摘要:本文介绍了基于LM321运放的同相输入型单限电压比较器电路。该电路通过运放开环工作模式实现电平判断:当输入信号Vs+>0V时输出+15V高电平,Vs+<0V时输出≈0V低电平。典型应用包括直流电压过零检测、交流信号整形、电池欠压报警和数字信号噪声过滤。电路具有结构简单(仅需1个运放和1个电阻)、成本低的优势,适用于传感器信号处理、波形转换等场景。使用时需注意参考电平调整、输出电平匹配等问题,如需抗噪声可增加正反馈电阻构成施密特触发器。该电路是运放实现简单电平逻辑的经典方案。

qq_37999850的博客 401

RK3568笔记五十四:SORT实时目标追踪

YOLOv5具备目标检测的功能,把视频分解成多幅图像并逐帧执行时,如果视频帧中有多个目标,如何知道一帧中的目标和上一帧是同一个对象就是目标跟踪的工作。DeepSort是实现目标跟踪的算法,从sort(simple online and realtime tracking)演变而来,使用卡尔曼滤波器预测所检测对象的运动轨迹,匈牙利算法将它们与新的检测目标相匹配。结合YOLOv5和DeepSORT可以在实时场景中实现高效的目标检测和跟踪。

789

ipad导入pdf_可以用在iPad或iPhone上编辑PDF的最佳APP

iPad和iPhone一直非常适合阅读PDF,最近Apple添加了更多工具来注释它们。然而,有些第三方替代品非常好,无论何时使用PDF都需要它们。Apple自己的工具使得iPad和大屏幕iPhone在阅读PDF方面非常出色。但是,如果您添加第三方应用程序,则可以使iOS成为编辑,更改和编辑它们的最佳方式。首先,尽管如此,在您的设备上获取PDF以进行任何编辑仍然有些笨拙。但是,有一些方法可以让这更容...

weixin_39890629的博客 2365

thinkphp6/8 - 实现评论区发表评论、回复评论功能数据库表设计与整个逻辑思路过程分析,tp5 评论盖楼等功能(附带源码稍加改造即可使用)

tp5评论区数据库表设计,tp5发表回复评论功能设计,thinkphp5如何做评论功能,tp5 php评论区实现发表回复删除评论,tp5评论区盖楼源码及数据表设计思路,thinkphp评论功能详细教程,thinkphp实现评论与回复功能,thinkphp实现文章评论和回复评论功能,tp5实现评论回复功能,thinkphp如何实现评论区,tp5网站PC移动端h5怎么做评论区发表留言及回复功能,thinkphp实现评论区插件,thinkphp评论区相互发表回复功能详细教程,thinkphp有没有评论区的组件插件

✅ 精选推荐文章 3159

【iOS】iPhone系统常用文件夹位置

iPhone系统常用文件夹位置 A、【/Applications】常用软件的安装目录B、【/Applications/Preferences.app/zh_CN.lproj】软件Preferences.app的中文汉化文件存放地方(直接修改里面的*.strings文件可以修改中文翻译,注意最后要 转换成UTF-8的格式)C、【/Library/Ringtones】系统自带的来电铃声存放目录D、...

Elite, not coder 709

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

iPhone系统常用文件夹位置(28个系统常用路径)

iPhone系统常用文件夹位置(28个系统常用路径) 工具/原料 iPhone手机 步骤/方法 【/Applications】常用软件的装置目录 【/Applications /Preferences.app/zh_CN.lproj】软件Preferences.app的中文汉化文件寄存地点(间接修正那儿的*.stri

Just Do It 2995

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

iPhone系统常用文件夹位置

iPhone系统常用文件夹位置1、【/Applications】常用软件的安装目录2、【/Applications/Preferences.app/zh_CN.lproj】软件Preferences.app的中文汉化文件存放地方(直接修改里面的*.strings文件可以修改中文翻译,注意最后要转换成UTF-8的格式)3、【/Library/Ringtones】系统自带的来电铃声存放目录4...

weixin_30852419的博客 475

使用python读取iphone文件_【Dpt-rp1】从iphone发送pdf到sony Dpt-rp1教程 懂python的进

该楼层疑似违规已被系统折叠隐藏此楼查看此楼大概2018年初的时候,github有个大神放出了一个不需要Digital Paper App就可以从电脑直接管理sony dpt-rp1电纸书上的文件的python程序,随后日本又有个大神写了一个python让上述程序可以在ios设备上配合pythonista 3这个软件直接发送pdf到设备。原链接如下 http://ki-chi.jp/?p=793 ...

weixin_42508215的博客 493

前端PDF生成与文件管理:浏览器原生文件系统API实战

文件系统访问是现代Web应用实现本地化操作的核心能力。浏览器原生文件系统API(File System Access API)通过标准化接口,使网页应用能够直接读写用户设备文件,突破了传统Web只能下载无法管理的限制。该技术基于权限沙箱机制,支持文件句柄持久化存储,特别适合PDF生成、文档编辑等需要频繁保存的场景。结合pdf-lib等库,开发者可实现类似桌面应用的"打开-编辑-保存"完整工作流。在工程实践中,需注意兼容性处理(如Chrome/Edge已支持而Safari待支持)和内存优化策略,同时通过Ind

weixin_30466039的博客 349

有谁可以说一下iphone程序运行的过程

如标题 我只知道程序的进入接口是main int main(int argc, char *argv[]) {       NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];       int r

师以长技以制夷 675

iphone同步助手_iExplorer for Mac(免iTunes文件同步工具) v4.3.0最新版

苹果手机同步助手哪款好?iExplorer for Mac 激活版是一款非常出色的免 iTunes 文件同步工具,并且不需要越狱。虽然 iTunes 能够兼任同步的大任,但是几乎所有果迷都知道通过 iTunes 同步文件是出了名的慢,并且非常占用电脑资源,程序本身也非常臃肿。而这个时候一款轻便的快捷的同步工具iExplorer for Mac 特别版就很有用了。(下载地址https://www.m...

weixin_39724382的博客 672
上一篇: Objective-C内存管理
下一篇: UIWebView获取正在加载的URL和网页title
StudyRecord
博客等级 码龄16年 96粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值