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的文字 ...
随机推荐
- CF633F The Chocolate Spree
Description Alice and Bob have a tree (undirected acyclic connected graph). There are \(a_{i}\) choc ...
- Python+Selenium 自动化实现实例-打开浏览器模拟进行搜索数据并验证
#导入模块 from selenium import webdriverfrom selenium.webdriver.common.keys import Keys #启动火狐浏览器driver = ...
- C# 实现动态添加列,新增合计行,求和
DataTable da = CommonBLL.GetList("*", "sys_dict", "IfState=1 and DictTypeId ...
- NOI2014 起床困难综合症 day1t1
感觉NOI题在向简单方向发展,或者说明年会难到暴呢? 直接模拟啊,枚举每个二进制数位,看经过变换之后是否为1及为1的条件即可.\( O(nlogm)\). 然后...跪了一个点,第五个死活比标准大一. ...
- nginx基于tcp负载均衡
官方参考文档:http://nginx.org/en/docs/stream/ngx_stream_core_module.html 只有nginx1.9以上的版本才支持tcp负载均衡 配置必须出现在 ...
- python 正则匹配中文(unicode)(转)
由于 需求原因,需要匹配 提取中文,大量google下,并没有我需要的.花了一个小时大概测试,此utf8中文通过,特留文. 参考: http://hi.baidu.com/nivrrex/blo ...
- ZOJ 3327 Friend Number
构造. (1)如果数字中带有$0$: 1.只有个位是$0$,这种情况就是给输入的数字$+10$再输出即可. 2.其余情况就是给输入的数字$+1$再输出即可. (2)如果数字中没有$0$: 从个位开始一 ...
- POJ3666 Making the Grade [DP,离散化]
题目传送门 Making the Grade Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9090 Accepted: ...
- Java使用Redis初探
Redis的相关概念不做介绍了,大家也可以先了解下Memcached,然后比较下二者的区别,就会有个整体的印象. 服务器端通常选择Linux , Redis对于linux是官方支持的,使用资料很多,需 ...
- 最近公共祖先LCA(前置知识)
1.前言 最近公共祖先(Least Common Ancestors),简称LCA,是由Tarjan教授(对,又是他)提出的一种在有根树中,找出某两个结点u和v最近的公共祖先问题. 2.什么是最近公共 ...