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(0, 0, 320, 480), nil);
    
    //获取当前的绘图上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    //开始pdf新的一页
    UIGraphicsBeginPDFPage();
    
    //绘制圆形
    CGContextAddEllipseInRect(context, CGRectMake(100, 100, 100, 100));
    [[UIColor redColor]set];
    CGContextDrawPath(context, kCGPathEOFillStroke);
    
    //绘制文字
    NSString *str = @"this is a image page";
    [str drawAtPoint:CGPointMake(50, 250) withAttributes:@{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:[UIFont systemFontOfSize:30]}];
    
    //结束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(0, 0, 320, 480), nil);
    
    
    //绘制图片
    for (int i = 0; i<9; i++)
    {
        //开始新的一页
        UIGraphicsBeginPDFPage();
        
        //绘制图片
        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.png",i]];
        [image drawInRect:CGRectMake(100, 200, 100, 100)];
    }
    
    //结束pdf的上下文
    UIGraphicsEndPDFContext();
}
复制代码

在沙盒目录下创建imgBook.pdf文件和绘制在imgBook.pdf文件上的笑脸截图为:

   

  一共有9张图片,所以创建了9页pdf,9张笑脸图片分别被绘制在上面。

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
分类:  iOS高级

本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4869473.html,如需转载请自行联系原作者
相关文章
|
10天前
|
人工智能 文字识别 数据挖掘
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
MarkItDown 是微软开源的多功能文档转换工具,支持将 PDF、PPT、Word、Excel、图像、音频等多种格式的文件转换为 Markdown 格式,具备 OCR 文字识别、语音转文字和元数据提取等功能。
78 9
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
|
13天前
|
JavaScript
jquery图片和pdf文件预览插件
EZView.js是一款jquery图片和pdf文件预览插件。EZView.js可以为图片和pdf格式文件生成在线预览效果。支持的文件格式有pdf、jpg、 png、jpeg、gif。
44 16
|
25天前
|
编解码 人工智能 文字识别
用PDF转换图片的方式弥补通义千问在扫描版PDF支持方面的缺失
当前通义千问Web版和本地版qwen-VL在处理扫描版PDF时均无法直接识别,导致实际应用中处理大量扫描PDF的需求难以满足。为此,通过使用Python的pdf2image库,可将PDF文件转换为图片,再进行OCR处理,实现解决方案。文中提供了具体的代码示例,展示了如何将PDF文件的每一页转换成图片,并保存至指定文件夹,为后续的OCR处理做好准备。
|
2月前
|
Java Apache Maven
将word文档转换成pdf文件方法
在Java中,将Word文档转换为PDF文件可采用多种方法:1) 使用Apache POI和iText库,适合处理基本转换需求;2) Aspose.Words for Java,提供更高级的功能和性能;3) 利用LibreOffice命令行工具,适用于需要开源解决方案的场景。每种方法都有其适用范围,可根据具体需求选择。
|
2月前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
574 1
|
2月前
|
索引 Python
PDF文件页面提取操作小指南
PDF文件页面提取操作小指南
102 4
|
2月前
|
Python
Python对PDF文件页面的旋转和切割
Python对PDF文件页面的旋转和切割
52 3
|
2月前
|
计算机视觉 Python
Python操作PDF文件
Python操作PDF文件
43 1
|
2月前
|
人工智能 计算机视觉 Python
ChatGPT编程省钱、方便小示例——实现PDF转成PNG文件
ChatGPT编程省钱、方便小示例——实现PDF转成PNG文件
38 1
|
2月前
|
JavaScript 前端开发 容器
Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克
Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克
246 0