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

NextChat深度实战指南:本地化AI对话工具的工程化落地 AI对话工具正从云端交互界面演进为可私有部署、可深度定制的本地化基础设施。其核心原理在于将模型调用、上下文管理与用户交互能力下沉至客户端,通过轻量前端直连API、本地IndexedDB存储、WebAssembly实时语义压缩等技术实现隐私优先与低延迟响应。这类工具的技术价值在于打破SaaS依赖、保障数据主权、支持多模型统一调度,并天然适配开发者工作流——如Rust调试辅助、Python代码审查、FFmpeg推流优化等典型场景。NextChat作为其中代表,以Mask工作流、本地Ollama集成、Gemini 阅读详情
33AB95711CC2022ECCABAA63A7224B7CB9E66D32C8E47ECECF8833DE15DE73A76
归正传,怎么在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
参考:http://c.gzl.name/archives/category/iphone
【UE5.3】不用插件实现HTTP、Websocket客户端 纯C++代码实现HTTP、Websocket客户端,并通过蓝图完成调用并测试 阅读详情

相关推荐

java 读取PDF文件中的内容

java 读取PDF文件中的内容 java 读取PDF文件中的内容

在iPhone程序上读取PDF文件

<br />原文地址:http://c.gzl.name/archives/category/cocoa/cview-draw<br /> <br />言归正传,怎么在iPhone程序中读取PDF的内容呢?答案是,苹果为我们准备了一个很神奇的framework Q2D(Quartz 2D)。Q2D提供了全套的PDF读取API,接下来我们来看看如果简单的使用Q2D来读取PDF文件: <br /> <br />我建立了一个工程叫iPhonePDF, 添加了一个UIScrollView(不知道怎么添加UIScro

StudyRecord的专栏 1980

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

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

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万+

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

[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

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

【Python】解析PDF文档文本和表格内容的四大方法介绍

很多文件为了安全都会存成PDF格式,比如有的论文、技术文档、书籍等等,这给程序读取这些文档内容带来了很多麻烦。Python目前解析PDF的扩展包有很多,本文将对比介绍PyPDF2、pdfplumber、pdfminer3k以及Camelot,告诉你哪个是好用的PDF解析工具。 本文使用的案例PDF文档下载链接: 链接:https://pan.baidu.com/s/1zH7vY47AqBYKM0X...

Asher117的博客 1万+

Python爬虫实战:用Selenium+ChromeDriver批量抓取政府网站政策文件(附完整代码)

本文详细介绍了使用Python的Selenium和ChromeDriver进行政府网站政策文件批量抓取的实战技巧。从环境配置、动态页面元素定位到分页机制破解和反爬虫策略,提供了完整的解决方案和代码示例,帮助开发者高效获取结构化政策数据。

weixin_42531710的博客 266

RK3568+XS9922B+Android11双模视频输入:CVBS与AHD兼容驱动开发实战

本文详细介绍了基于RK3568平台和XS9922B解码芯片,在Android11系统上开发支持CVBS与AHD双模视频输入的兼容驱动实战。内容涵盖硬件选型、内核驱动框架分析、双模信号自动识别与配置、视频通道切换实现及图像质量优化等关键技术点,为车载监控等需要兼容新旧摄像头的项目提供完整解决方案。

js777的博客 379

PDF文件内容读取

PDF文件内容读取 一、PDF表格读取 可以读取表格内容,以及表格坐标 1、maven依赖 <!-- openPdf 可以读取标签--> <dependency> <groupId>com.github.librepdf</groupId> <artifactId>openpdf</artifactId> <version>1.3.26

hellokitty136的博客 3335

FFmpeg实战:5分钟搞定m3u8视频下载与ts文件合并(附完整命令)

本文详细介绍了如何使用FFmpeg快速下载m3u8视频并合并ts文件为mp4格式。通过简洁的命令行操作,读者可以轻松完成视频处理任务,包括环境准备、链接获取、下载合并及性能优化等实用技巧,特别适合需要高效处理流媒体内容的用户。

weixin_30836759的博客 221

(JSP)关于手机端(尤其是苹果手机)pdf文件无法打开的解决方案

流的方式下载附件 <!-- @author :daisy @date : 2011-12-04 @note : 从数据库中读取BLOB图片显示 --> <%@page import="com.cwai.dao.DBManager"%> <%@ page contentType=" text/html; charset=UTF-8" pageEnco...

ZQQing1314的博客 4774

PCIe协议之 Equalization篇 之 理论篇 之 FFE

作为最后一道“精加工”工序,DFE利用其不放大噪声的优势,精准地消除残余的、强烈的后光标ISI,最终得到一个非常干净、张得很开的眼图,供判决器使用。信号经过信道衰减后变得模糊,首先由CTLE进行“粗调”,提供一个宽频带的增益,将眼图初步打开,为后面的DFE创造一个可以正常工作的信号环境。,它通过将输入信号在不同时间点上的多个副本(称为“抽头”)进行加权求和,来直接塑造或“整形”输出信号的波形。:这是最主要的信号路径,通常系数为正值,决定了信号的幅度。:将所有加权后的信号相加,产生最终的均衡输出。

那么菜的博客 755

科研绘图系列:基因突变瀑布图统计以及可视化

科研绘图系列:基因突变瀑布图统计以及可视化

专注生信领域 1653

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

Unreal5从入门到精通之如何实现移动端触屏滑动手势

随着移动设备的普及,越来越多的游戏和应用选择在移动平台上发布。Unreal Engine 5(UE5)作为一款强大的游戏引擎,提供了丰富的工具和功能,帮助开发者打造出色的移动体验。UE5不仅提升了图形质量,还大幅简化了开发流程,使得开发者能够更专注于游戏设计和用户体验。在移动游戏中,触屏滑动手势是用户与应用互动的主要方式之一。然而,许多开发者在实现这些功能时常常遇到困难。为了填补这一知识空白,本篇文章将详细介绍如何在UE5中实现移动端触屏滑动手势,帮助你从入门到精通,提升你的开发技能。

TxNet 1137

读取PDF文件的中文文字

1添加引用iTextSharp2引入命名空间using iTextSharp.text.pdf; using iTextSharp.text.pdf.parser;3读取文件 private string ReadPFD(string path)         {            // string path = path;// @"D:\ydfile\d4bab8ff-26ff-4ddf...

xuexiaodong2009的专栏 3088

《YOLO11魔术师专栏》专栏介绍 & 专栏目录

【原创自研模块】【多组合点优化】【注意力机制】【主干篇】【neck优化】【卷积魔改】 【block&多尺度融合结合】【损失&IOU优化】【上下采样优化】【小目标性能提升】【前沿论文分享】【训练实战篇】

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1万+

拼多多笔试真题-多多送快递(C++/Py/Java /Js/Go)

拼多多技术岗笔试 8月2号真题,拼多多笔试第三题【多多送快递】,提供详细思路讲解以及Java、C++、Python、Go、JavaScript多语言代码实现。拼多多笔试真题【多多送快递】多语言题解。

qq_45776114的博客 293

如何将 iPhone 备份到 iCloud?

iCloud 是苹果公司提供的云存储服务,可帮助 iPhone 用户将重要数据保存到云端。启用 iCloud 云备份后,即使您的 iPhone 丢失、损坏或需要恢复出厂设置,您也可以使用之前创建的备份将受支持的数据恢复到设备上。帮助保存设备设置、应用程序数据、主屏幕布局、消息历史记录和其他信息,降低手机丢失或损坏时数据丢失的风险。启用 iCloud 自动备份后,您的 iPhone 会在满足所需条件时自动创建备份,这样您就不必每次都手动操作。

Digitally的博客 267

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

近 900GB 的 iPhone 搬家:有线要 14 小时,换成无线反而预估 7 小时?

家里几部 iPhone 需要重新安排数据,原以为只是插根线、点几下屏幕的事,没想到折腾下来,竟给自己上了一堂 USB、Wi-Fi 和电源管理的实战课。先说结果:iPhone 14 Pro Max 迁移到恢复出厂设置的 iPhone 16 Pro Max,第一次走 USB-C 转 Lightning 有线连接,耗时约 14 小时。后来改走「快速开始」无线直接迁移,手机显示预估约 7 小时。

Saniffer的博客 315

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android 蓝牙通讯demo

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

iPhone国行AI重磅更新

且由于国行 AI 大量能力依赖端侧模型运行,需要建立新的资料检索,因此在刚上手的当下,存在一些稳定性问题,譬如相册里的自然语言搜索、回忆影片,以及锁屏的通知总结等功能都需要等待索引完成,可能需要等待一到两天才能能正常使用。但对于国行版本,我们更关心的是,这套从海外引进的 AI 写作工具,会不会在中文语境里「水土不服」?过去两年,我们很多发布会上看过太多眼花缭乱的「一句话点咖啡」演示,但真正把手机当主力机用上几个月就会发现,演示 Demo 里的惊艳,离每天日常使用的稳定可靠,中间还隔着十万八千里。

Enweitech Software Works 361

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 自定义UIAlertView
handnotes
博客等级 码龄20年 3粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值