IOS 绘制PDF -转

-(void)createPdf:(UIImage *)img andText:(NSString *)text{
 2     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 3     NSString *saveDirectory = [paths objectAtIndex:0];
 4     NSString *saveFileName = @"myPDF.pdf";
 5     NSString *newFilePath = [saveDirectory stringByAppendingPathComponent:saveFileName];
 6     const char *filename = [newFilePath UTF8String];
 7     CGRect pageRect = CGRectMake(0, 0, 612, 792);
 8     // This code block sets up our PDF Context so that we can draw to it
 9
10
11     CGContextRef pdfContext;
12     CFStringRef path;
13     CFURLRef url;
14     CFMutableDictionaryRef myDictionary = NULL;
15     // Create a CFString from the filename we provide to this method when we call it
16     path = CFStringCreateWithCString (NULL, filename, kCFStringEncodingUTF8);
17     // Create a CFURL using the CFString we just defined
18     url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, 0);
19     CFRelease (path);
20     // This dictionary contains extra options mostly for ‘signing’ the PDF
21     myDictionary = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
22     CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File"));
23     CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name"));
24     // Create our PDF Context with the CFURL, the CGRect we provide, and the above defined dictionary
25     pdfContext = CGPDFContextCreateWithURL (url, &pageRect, myDictionary);
26     // Cleanup our mess
27     CFRelease(myDictionary);
28     CFRelease(url);
29
30     // Done creating our PDF Context, now it’s time to draw to it
31     // Starts our first page
32     CGContextBeginPage (pdfContext, &pageRect);
33
34     UIImage* myUIImage = img;
35     CGImageRef pageImage = [myUIImage CGImage];
36     CGContextDrawImage(pdfContext, CGRectMake(0,0,([myUIImage size].width) , ([myUIImage size].height)), pageImage); //绘制图片
37     // Draws a black rectangle around the page inset by 50 on all sides
38 //    CGContextStrokeRect(pdfContext, CGRectMake(50, 50, pageRect.size.width - 100, pageRect.size.height - 100));
39
40     // Adding some text on top of the image we just added
41 //    CGContextSelectFont (pdfContext, "Helvetica", 30, kCGEncodingMacRoman);
42     CGContextSetTextDrawingMode (pdfContext, kCGTextFill);
43     CGContextSetRGBFillColor (pdfContext, 0, 0, 0, 1);
44
45
46
47     UIGraphicsPushContext(pdfContext);  //将需要绘制的层push
48     CGContextTranslateCTM(pdfContext, 0, 792);  //转换Y轴坐标,  底层坐标与cocoa 组件不同 Y轴相反
49     CGContextScaleCTM(pdfContext, 1, -1);
50
51 //    CGContextShowTextAtPoint (pdfContext, 260, 390, [text UTF8String], strlen([text UTF8String])); //汉字不正常
52
53     [text drawAtPoint:CGPointMake(80, 80) withFont:[UIFont systemFontOfSize:18]];  //绘制汉字
54
55 //    UIFont *font = [UIFont systemFontOfSize:15 ]; //自定义字体
56 //    CGContextSetFillColorWithColor(pdfContext, [UIColor blackColor].CGColor); //颜色
57 //    [text drawAtPoint:CGPointMake(260,390) forWidth:50 withFont:font minFontSize:8 actualFontSize:NULL lineBreakMode:UILineBreakModeTailTruncation baselineAdjustment:UIBaselineAdjustmentAlignCenters];
58
59     UIGraphicsPopContext();
60
61
62     CGContextStrokePath(pdfContext);
63
64     // End text
65     // We are done drawing to this page, let’s end it
66     // We could add as many pages as we wanted using CGContextBeginPage/CGContextEndPage
67     CGContextEndPage (pdfContext);
68     // We are done with our context now, so we release it
69     CGContextRelease (pdfContext);
70 }

1 - (void)viewDidLoad
2 {
3     [super viewDidLoad];
4     // Do any additional setup after loading the view, typically from a nib.
5
6     //调用方法
7     [self createPdf:[UIImage imageNamed:@"aa"] andText:@"汉字"];
8
9 }

转自:http://www.cppblog.com/Khan/archive/2013/03/18/198566.html

时间: 2024-10-10 09:19:34

IOS 绘制PDF -转的相关文章

Python绘制PDF文件~超简单的小程序

Python绘制PDF文件 项目简介 这次项目很简单,本次项目课,代码不超过40行,主要是使用 urllib和reportlab模块,来生成一个pdf文件. reportlab官方文档 http://www.reportlab.com/docs/reportlab-userguide.pdf 我们看看这个网页上的原数据: http://www.swpc.noaa.gov/ftpdir/weekly/Predict.txt 代码: #-*- coding: utf-8 -*- # 1. 用于下载原

C# 绘制PDF图形——基本图形、自定义图形、色彩透明度

引言 在PDF中我们可以通过C#程序代码来添加非常丰富的元素来呈现我们想要表达的内容,如绘制表格.文字,添加图形.图像等等.在本篇文章中,我将介绍如何在PDF中绘制图形,并设置图形属性的操作. 文章中将分以下要点进行介绍: 1. 绘制基本图形(线条.椭圆.圆形.矩形.三角形) 2. 绘制自定义图形 3. 绘制图形并设置图形透明度 所需工具:Spire.PDF for .NET 4.0 提示:安装后,直接引用安装路径下Bin文件夹中的dll文件到项目程序中即可. [示例1]绘制基本图形 C# 步骤

C# 绘制PDF嵌套表格

嵌套表格,即在一张表格中的特定单元格中再插入一个或者多个表格,使用嵌套表格的优点在于能够让内容的布局更加合理,同时也方便程序套用.下面的示例中,将介绍如何通过C#编程来演示如何插入嵌套表格到PDF文档.要点概括: 插入嵌套表格 插入文字到嵌套表格 插入图片到嵌套表格 使用工具 Spire.PDF 4.9.7 Visual Studio注:1.这里使用的版本为4.9.7,经测试,对于代码中涉及的PdfGridCellContentList类和PdfGridCellContent类仅在使用该版本或者

iOS 绘制1像素的线

一.Point Vs Pixel iOS中当我们使用Quartz,UIKit,CoreAnimation等框架时,所有的坐标系统采用Point来衡量.系统在实际渲染到设置时会帮助我们处理Point到Pixel的转换. 这样做的好处隔离变化,即我们在布局的事后不需要关注当前设备是否为Retina,直接按照一套坐标系统来布局即可. 实际使用中我们需要牢记下面这一点: One point does not necessarily correspond to one physical pixel. 1

ios 绘制wav波形图

最近研究了如何在iOS上绘制wav波形图.查了很多资料,都没能找到一个很完整的介绍,我这里总结一下一些经验. 首先需要了解wav的这3个重要指标:采样率.采样位数.声道数.下面以16KHz, 16Bit, 单声道为例来说明. 采样率:(也称为采样速度或者采样频率)定义了每秒从连续信号中提取并组成离散信号的采样个数,单位用赫兹(Hz)来表示.采样频率的倒数是采样周期(也 称为采样时间),它表示采样之间的时间间隔.采样率为16KHz,表明每秒钟采样有16K次,即0.001秒内采集16个值. 采样位数

史上最全的IOS电子书PDF制作

本人背靠海量纸质图书,可以制作各种纸质书籍的电子化,有需要可以Q:1481449626 <iOS编程 第3版 针对Xcode 4.3 Big Nerd Ranch培训系列>作者:JoeConway,AaronHillegass著:夏伟频译 页数:589 出版社:武汉市:华中科技大学出版社 出版日期:2013.01 简介:<iOS编程(第3版)>更新了iOS5和Xcode4.3的内容.全书涵盖了开发iOS应用的方方面面.从Objective-C基础知识到新增加的语言特性:从AppKi

转:iOS绘制一个UIView

绘制一个UIView 绘制一个UIVIew最灵活的方式就是由它自己完成绘制.实际上你不是绘制一个UIView,你只是子类化了UIView并赋予子类绘制自己的能力.当一个UIVIew需要执行绘图操作的时,drawRect:方法就会被调用.覆盖此方法让你获得绘图操作的机会.当drawRect:方法被调用,当前图形上下文也被设置为属于视图的图形上下文.你可以使用Core Graphics或UIKit提供的方法将图形画到该上下文中. 你不应该手动调用drawRect:方法!如果你想调用drawRect:

原创 ios绘制 圆形气泡

效果: 1 先自定义一个view #import <UIKit/UIKit.h> #define kCalloutWidth   80.0   //气泡高度 #define kCalloutHeight  95.0   //气泡宽度 #define kArrorHeight    15      //底部距离高度 @interface CallOutContentView : UIView @end 2实现代码 #import "CallOutContentView.h"

iOS绘制手势解锁密码

手势解锁这个功能其实已经用的越来越少了.但是郁闷不知道我公司为什么每次做一个app都要把手势解锁加上.....于是就自己研究了一下手势解锁页面的实现.. 要想实现这个页面,先说说需要掌握哪些: UIPanGestureRecognizer的基本使用 CGRectContainsPoint(<#CGRect rect#>, <#CGPoint point#>) UIBezierPath贝塞尔曲线的绘制 drawRect 和 layoutIfNeeded 知道何时,如何使用 只要掌握上