iphone pdf 解析

1 篇文章 0 订阅
 

#import <UIKit/UIKit.h>

 

@class PDFTestViewController;

@interface PDFView : UIView {

 //这个类封装了PDF画图得所有信息

 CGPDFDocumentRef pdf;

 //PDFDocument 中得一页

 CGPDFPageRef page;

 //总共页数

 int totalPages;

 //当前得页面

 int currentPage;

 

 PDFTestViewController *pdftest;

}

@property(nonatomic,retain)IBOutlet PDFTestViewController *pdftest;

//当前视图初始化类,在该方法中会创建一个CGPDFDocuemntRef对象,传递一个PDF文件得名字,和所需要页面得大小,

- (id)initWithFrame:(CGRect)frame andFileName:(NSString *)fileName;

//创建一个PDF对象,此方法在初始化方法中被调用

- (CGPDFDocumentRef)createPDFFromExistFile:(NSString *)aFilePath;

 

-(void)reloadView;

/*

 页面之间得跳转

 */

-(void)goUpPage;   

-(void)goDownPage;

 

@end

//

//  PDFView.m

//  PDFViewTest

//

//  Created by Evan Lynn on 10-6-20.

//  Copyright 2010 Tera Age. All rights reserved.

//

 

#import "PDFView.h"

//#import "PDFTestViewController.h"

 

@implementation PDFView

@synthesize pdftest;

- (id)initWithFrame:(CGRect)frame andFileName:(NSString *)fileName{

 if (self = [super initWithFrame:frame]) {

 NSString *dataPathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:fileName];

 pdf = [self createPDFFromExistFile:dataPathFromApp];

 self.backgroundColor = [UIColor clearColor];

 }

 return self;

}

 

- (CGPDFDocumentRef)createPDFFromExistFile:(NSString *)aFilePath{

 CFStringRef path;

 CFURLRef url;

 CGPDFDocumentRef document;

path = CFStringCreateWithCString(NULL, [aFilePath UTF8String], kCFStringEncodingUTF8);

url = CFURLCreateWithFileSystemPath(NULL, path, kCFURLPOSIXPathStyle, NO);

 CFRelease(path);

document = CGPDFDocumentCreateWithURL(url);

 CFRelease(url);

totalPages = CGPDFDocumentGetNumberOfPages(document);

currentPage=1;

 

if (totalPages == 0) {

 

return NULL;

}

return document;

}

 

- (void)drawRect:(CGRect)rect {

//得到绘图上下文环境

    CGContextRef context = UIGraphicsGetCurrentContext();

//得到一个PDF页面

    page = CGPDFDocumentGetPage(pdf, currentPage);

/*进行坐标转换向右移动100个单位,并且向下移动当前视图得高度,

这是因为Quartz画图得坐标系统是以左下角为开始点,但iphone视图是以左上角为开始点

 */

    CGContextTranslateCTM(context, 100.0,self.bounds.size.height);

//转变坐标系

    CGContextScaleCTM(context, 1.0, -1);

    CGContextDrawPDFPage(context, page);

 

}

 

- (void)dealloc {

    [super dealloc];

}

 

-(void)reloadView{

[self setNeedsDisplay];

}

 

-(void)goUpPage{

if(currentPage < 2)

return;

--currentPage;

[self reloadView];

}

 

-(void)goDownPage{

if(currentPage >=totalPages)

return;

++currentPage;

[self reloadView];

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值