iOS:quartz2D绘图(在PDF文件上绘制图片)
quartz2D还可以在PDF文件上绘制图片,它有自己的PDF Graphics Context上下文,通过UIGraphicsBeginPDFContextToFile方法开始上下文后就可以绘制图片了,最后记得使用UIGraphicsEndPDFContext()方法结束上下文。绘制pdf时,既可以绘制单页pdf,也可以绘制多页pdf成一本书,在绘制开始时,使用UIGraphicsBeginPDFPage()开始新的一页这是非常重要的。下面演示绘制单页pdf和多页的pdf。
具体的实例如下:
//将图片绘制在单页的pdf上
#parma mark -创建单页pdf
-(void)createPDF
{
//设置pdf文件的路径
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //文档目录
NSString *document = [documents lastObject];
//NSLog(@"%@",document); //拼接pdf路径
NSString *PDFpath = [document stringByAppendingPathComponent:@"img.pdf"]; //开始pdf的上下文
UIGraphicsBeginPDFContextToFile(PDFpath, CGRectMake(, , , ), nil); //获取当前的绘图上下文
CGContextRef context = UIGraphicsGetCurrentContext(); //开始pdf新的一页
UIGraphicsBeginPDFPage(); //绘制圆形
CGContextAddEllipseInRect(context, CGRectMake(, , , ));
[[UIColor redColor]set];
CGContextDrawPath(context, kCGPathEOFillStroke); //绘制文字
NSString *str = @"this is a image page";
[str drawAtPoint:CGPointMake(, ) withAttributes:@{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:[UIFont systemFontOfSize:]}]; //结束pdf的上下文
UIGraphicsEndPDFContext();
}
在沙盒目录下创建img.pdf文件和绘制在img.pdf文件上的圆图形和文字的截图为:


//将多张图片绘制在多页的pdf上
首先导入多张笑脸图片,导入的素材截图为:

#parma mark -创建多页pdf
-(void)createPDFBook
{
//设置pdf文件的路径
NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //文档目录
NSString *document = [documents lastObject];
//NSLog(@"%@",document); //拼接pdf路径
NSString *PDFpath = [document stringByAppendingPathComponent:@"imageBook.pdf"]; //开始pdf的上下文(参数:设置pdf路径、设置pdf大小、附带pdf字典信息)
UIGraphicsBeginPDFContextToFile(PDFpath, CGRectMake(, , , ), nil); //绘制图片
for (int i = ; i<; i++)
{
//开始新的一页
UIGraphicsBeginPDFPage(); //绘制图片
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.png",i]];
[image drawInRect:CGRectMake(, , , )];
} //结束pdf的上下文
UIGraphicsEndPDFContext();
}
在沙盒目录下创建imgBook.pdf文件和绘制在imgBook.pdf文件上的笑脸截图为:

一共有9张图片,所以创建了9页pdf,9张笑脸图片分别被绘制在上面。
iOS:quartz2D绘图(在PDF文件上绘制图片)的更多相关文章
- C#/VB.NET 替换 PDF 文件上的现有图像
我们都知道对PDF文件进行修改和编辑不是一件容易的事.但有时当我们想用新的图像来替换PDF文件上的现有图像时,该怎么办呢?别担心,本文将向您展示如何在 C#/VB.NET 中替换 PDF 文件中的现有 ...
- 个人永久性免费-Excel催化剂功能第88波-批量提取pdf文件信息(图片、表格、文本等)
日常办公场合中,除了常规的Excel.Word.PPT等文档外,还有一个不可忽略的文件格式是pdf格式,而对于想从pdf文件中获取信息时,常规方法将变得非常痛苦和麻烦.此篇给大家送一pdf文件提取信息 ...
- Java 使用PDFBox提取PDF文件中的图片
今天做PDF文件解析,遇到一个需求:提取文件中的图片并保存.使用的是流行的apache开源jar包pdfbox, 但还是遇到坑了,比如pdfbox版本太高或太低都不能用!!这个包竟然没有很好地做好兼容 ...
- 如何把PDF文件转换为JPG图片
大家有遇到需要将PDF文件转换为JPG的情况么,文档资料里面经常会有一些图片类型的内容,有的时候我们需要获取这些图片内容,但是PDF文件又是不可编辑的,那如何把PDF文件转换为JPG图片呢,跟着小编一 ...
- PHP PDF文件上传
/** * 上传PDF文件 */ function UploadPdf(){ if(is_array($_FILES)){ $tmp_file = $_FILES['pdf'] ['tmp_name' ...
- 阿里云OSS下载pdf文件,并在pdf文件上添加水印
代码: 兵马未动,粮草先行 作者: 传说中的汽水枪 如有错误,请留言指正,欢迎一起探讨. 转载请注明出处. 公司要求从阿里云OSS下载pdf文件并且需要添加水印. 因此这里总结一下. 首先添加了一个F ...
- R语言绘图:在地图上绘制热力图
使用ggplot2在地图上绘制热力图 ######*****绘制热力图代码*****####### interval <- seq(0, 150000, 25000)[-2] #设置价格区间 n ...
- R语言绘图:在地图上绘制散点图
使用ggplot2在地图上绘制散点图 ######*****绘制散点图代码*****####### options(baidumap.key = '**************') #设置密钥 bei ...
- 前端使用html2canvas截图,在canvas上绘制图片及保存图片
1.使用html2canvas 存在的问题: 不同的机型绘制位置不同的问题. 这个主要因为Html动态设置了html的dpr.(dpr可以解决屏幕显示不了1pxborder和无法显示小于12px的文字 ...
随机推荐
- linux命令(33):tail命令
1.命令格式; tail[必要参数][选择参数][文件] 2.命令功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理.常用查看日志文件. 3.命令参数: -f 循环读取 -q 不显示 ...
- 史上最全的web前端系统学习教程!
这份资料整理花了近7天,如果感觉有用,可以分享给更有需要的人. 在看接下的介绍前,我先说一下整理这份资料的初衷: 我的初衷是想帮助在这个行业发展的朋友和童鞋们,在论坛博客等地方少花些时间找资料,把有限 ...
- rsync数据定时增量备份知识管理服务器数据
为了保证公司知识管理服务器数据的安全性,所以计划每天同步confluence服务器上面数据 一.安装rsync服务端 1.查看是否安装rsync ps -ef | grep rsync 2.添加配置文 ...
- 【剑指offer】面试题 2. 实现 Singleton 模式
面试题 2. 实现 Singleton 模式 题目:设计一个类,我们只能生成该类的一个实例. 单例模式:确保一个类只有一个实例,并提供了一个全局访问点. Java 实现 1.饿汉模式 //饿汉模式 p ...
- [THINKPHP] 模板可用三元操作符
<td>{$vo['realname'] ? $vo['realname'] : $vo['nickname']}</td>
- 【BZOJ 3166】【HEOI 2013】Alo
http://www.lydsy.com/JudgeOnline/problem.php?id=3166 这道题难点在于求能对一个次大值有贡献的区间. 设这个次大值为\(a_i\),\(a_i\)左边 ...
- 【BFS】Power Hungry Cows
Power Hungry Cows Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5522 Accepted: 1384 ...
- HDU 6052 To my boyfriend(悬线法)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6052 [题目大意] 给出一个数字矩阵,求子矩阵期望数字种数 [题解] 我们统计[x,y]为其所表示 ...
- BZOJ 3022 [Balkan2012]The Best Teams(扫描线+线段树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3022 [题目大意] 给定n个球员,第i个球员年龄为AGEi,水平为SKILLi. 没有 ...
- 【贪心】POJ2393-Yogurt Factory
[思路] 水题,没什么好说的.每周为之后多生产的牛奶可以看作之后才生产的.每周最少生产单价=min(上周生产的最小单价+储存单价,本周生产单价).注意ans是long long,否则会WA. #inc ...