`
jsntghf
  • 浏览: 2526087 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

读取PDF(二)

    博客分类:
  • iOS
阅读更多

以前写了一篇文章:读取PDF,这篇文章实现了同样的功能,在原来的基础上增加了上一页和下一页的功能。

 

pdfViewController.h

 

#import <UIKit/UIKit.h>
#import "PDFView.h"

@interface pdfViewController : UIViewController {
	IBOutlet PDFView *pdfview;
}

- (IBAction)goNextPage:(id)sender;
- (IBAction)goPrePage:(id)sender;
@end
 

pdfViewController.m

 

#import "pdfViewController.h"

@implementation pdfViewController

- (void)viewDidLoad {
	pdfview = [[PDFView alloc] initWithFrame:pdfview.frame andFileName:@"metro.pdf"];
    [self.view addSubview:pdfview];
    [pdfview release];
    [super viewDidLoad];
}

- (IBAction)goNextPage:(id)sender{
    [pdfview goDownPage];
}

- (IBAction)goPrePage:(id)sender{
    [pdfview goUpPage];
}

@end

 

PDFView.h

 

#import <UIKit/UIKit.h>

@interface PDFView : UIView {
	//这个类封装了PDF画图的所有信息	
	CGPDFDocumentRef pdf;
	
	//PDFDocument中的一页	
	CGPDFPageRef page;
	
	//总共页数	
	int totalPages;
	
	//当前的页面	
	int currentPage;	
}

//当前视图初始化类,在该方法中会创建一个CGPDFDocuemntRef对象,传递一个PDF文件的名字和所需要页面的大小
- (id)initWithFrame:(CGRect)frame andFileName:(NSString *)fileName;

//创建一个PDF对象,此方法在初始化方法中被调用
- (CGPDFDocumentRef)createPDFFromExistFile:(NSString *)aFilePath;

- (void)reloadView;

//页面之间的跳转
- (void)goUpPage;   

- (void)goDownPage;

@end

 

PDFView.m

 

#import "PDFView.h"

@implementation PDFView

- (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);
	
	//进行坐标转换,这是因为Quartz的坐标系统是以左下角为起始点,但iPhone视图是以左上角为起始点	
    CGContextTranslateCTM(context, 0.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];	
}

@end
分享到:
评论

相关推荐

    pdf.js读取pdf文档

    在“pdf.js读取pdf文档”的场景中,我们主要会涉及到以下几个关键知识点: 1. PDF.js库的使用: PDF.js提供了API来加载、解析和显示PDF文件。开发者可以通过调用`PDFJS.getDocument(url)`方法来加载PDF文档,然后...

    java读取pdf文件属性

    在IT领域,特别是Java编程中,读取PDF文件的元数据是一项常见的需求,尤其是在文档管理、内容管理系统或任何需要处理大量文档的应用场景中。本文将深入探讨如何使用Java读取PDF文件的属性,如作者、标题等元数据,...

    .NET生成PDF 读取PDF文本内容 获取PDF内图片

    在.NET开发环境中,生成PDF、读取PDF文本内容以及获取PDF内的图片是常见的需求,尤其在文档处理和报告生成的应用中。本文将详细介绍如何利用C#进行这些操作,并提供相关库和技术的概述。 首先,生成PDF文件在.NET中...

    Java 读取PDF文件

    在Java编程环境中,读取PDF文件是一项常见的任务,特别是在开发桌面应用或需要处理PDF文档内容时。本篇文章将深入探讨如何使用Java来读取PDF文件,并将其内容展示在一个由JFrame和JPanel构建的GUI窗口中。 首先,...

    c# Winform 读取PDF文件

    在C# Winform环境下,开发一个能够高效读取PDF文件的应用是常见的需求。通常,我们可能会选择使用WebBrowser控件来展示PDF,但这并非最佳方案,因为它依赖于系统中的Adobe Acrobat Reader,且性能可能不尽人意。本...

    C#生成PDF 读取PDF文本内容 获取PDF内图片

    本主题聚焦于利用C#处理PDF文档,包括生成PDF、读取PDF文本内容以及获取PDF内的图片。以下是对这些知识点的详细阐述: ### 1. C#生成PDF 生成PDF文件通常需要借助第三方库,因为.NET Framework的标准库并不直接...

    c#读取pdf中文本内容

    本篇文章将围绕“C#读取PDF中文本内容”这一主题,详细介绍如何使用Spire.Pdf插件来解决这个问题。 首先,Spire.Pdf是一款强大的.NET PDF组件,它提供了全面的PDF创建、编辑和阅读功能,包括读取PDF中的文本内容。...

    C#生成PDF 读取PDF文本内容 获取PDF内图片完整源码(调用第三方DLL)

    在.NET环境中,C#开发人员经常需要处理PDF文档,包括生成PDF、读取PDF文本以及提取PDF中的图像。为了实现这些功能,通常会借助于第三方库或DLL,因为.NET框架本身并不内置完整的PDF处理能力。本教程将详细介绍如何...

    C#生成PDF 读取PDF文本内容 获取PDF内图片(亲测可用)

    本主题聚焦于利用C#处理PDF文档,包括生成PDF、读取PDF文本内容以及提取PDF内的图片。以下是对这些知识点的详细阐述: 1. **C# 生成PDF**: 在C#中生成PDF文档,可以借助多种第三方库,如iTextSharp、PDFsharp、...

    C#生成PDF 读取PDF文本内容 获取PDF内图片--完整版)

    本主题聚焦于利用C#处理PDF文档,包括生成PDF文档、读取PDF文本内容以及提取PDF内的图片。以下将详细介绍这些知识点。 1. **生成PDF**: 在C#中生成PDF文档,我们可以使用开源库如iTextSharp或PDFsharp。...

    使用PDFLIB库实现对pdf文件的读取

    PDFLIB库是一个强大的PDF处理库,它为程序员提供了在各种编程环境中创建、修改和读取PDF文件的功能。在这个场景中,我们关注的是如何在Visual Studio 2010(VS2010)中利用PDFLIB TET库来读取PDF文件。TET是PDFLIB的...

    用Java读取pdf中的数据

    Java作为一种强大的编程语言,提供了多种库来处理PDF文档,其中一个关键任务是读取PDF中的数据。本篇文章将详细介绍如何使用Java进行PDF数据的读取,并围绕`PdfReader`这个概念展开。 首先,`PdfReader`通常指的是...

    Qt读取Pdf文件Demo

    Qt使用mupdf库读取pdf文件,并且显示到界面上,只是一个简单的Demo,介绍了库的使用。 Qt使用mupdf库读取pdf文件,并且显示到界面上,只是一个简单的Demo,介绍了库的使用。 Qt使用mupdf库读取pdf文件,并且显示到...

    C#读取PDF文件内容 按每页生成文本对象(只读取文字版PDF)

    本篇文章将详细探讨如何使用C#编程语言结合Spire.Pdf库来读取PDF文件的内容,并将其转换为JSON文本对象,特别针对那些仅包含可编辑文字的PDF文件。 首先,Spire.Pdf是一款强大的.NET PDF组件,它提供了丰富的API,...

    C#编程读取pdf文件

    下面我们将深入探讨如何使用C#和PDFBox的IKVM版本来读取PDF文件: 1. **安装IKVM**: 首先,你需要获取PDFBox的Java库,并且下载IKVM的.NET版本。将IKVM的dll文件添加到你的C#项目引用中,同时也要包含PDFBox的Java...

    vb.net 读取pdf 并写入网页

    Adobe提供了免费的PDF iFilter,它允许程序以文本格式读取PDF内容。然而,对于更复杂的操作,如渲染PDF页面,我们需要使用专门的库,如iTextSharp或PDFsharp。这些库提供了API,可以读取、修改和创建PDF文件。 **1....

    C++程序读取PDF中的文本

    C++程序读取PDF中的文本。Adobe允许你提交PDF文件,提取成文本或HTML后再通过邮件发送给你。但是假如你需要自己提取文本或在程序中加入这个功能的话,需要花费很多时间。也许你还需要对文本应用某些特殊格式(如,...

    winform读取pdf

    在Windows Forms(Winform)应用开发中,读取PDF文件是一项常见的需求,特别是在需要提供用户交互界面以查看、操作PDF文档的场景下。本篇将详细介绍如何使用C#语言在Visual Studio 2012环境下实现窗体在线读取PDF,...

    Android使用iText生成pdf并读取pdf内容

    在Android平台上,生成和读取PDF文件是一项常见的需求,特别是在数据导出、报告生成或文档共享等场景。iText是一个强大的开源库,它允许开发者在Java和.NET环境中创建、编辑和处理PDF文档。在这个场景中,我们将探讨...

Global site tag (gtag.js) - Google Analytics