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

读取PDF

    博客分类:
  • iOS
阅读更多

PDFAppDelegate.h

 

#import <UIKit/UIKit.h>

@interface PDFAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
	IBOutlet UIScrollView *scrollView;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;

@end

 

PDFAppDelegate.m 

 

#import "PDFAppDelegate.h"
#import "PDFView.h"

@implementation PDFAppDelegate

@synthesize window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
	NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"metro_geo.pdf"];	
	PDFView *pdfView = [[PDFView alloc] initWithFilePath:filePath];
	scrollView.contentSize = pdfView.frame.size;
	[scrollView addSubview:pdfView];
	[pdfView release];	
    [window makeKeyAndVisible];	
	return YES;
}

- (void)dealloc {
    [window release];
    [super dealloc];
}

@end

 

PDFView.h

 

#import <UIKit/UIKit.h>

@interface PDFView : UIView {
	CGPDFDocumentRef pdfRef;
	CGPDFPageRef page;
}

- (id)initWithFilePath:(NSString *)filePath;
- (void)reloadView;
- (CGPDFDocumentRef)createPDFFromExistFile:(NSString *)aFilePath;

@end

 

PDFView.m

 

#import "PDFView.h"

@implementation PDFView

- (id)initWithFilePath:(NSString *)filePath {
	pdfRef = [self createPDFFromExistFile:filePath];
	CGPDFPageRef pdfPage = CGPDFDocumentGetPage(pdfRef, 1);
	CGRect mediaRect = CGPDFPageGetBoxRect(pdfPage, kCGPDFMediaBox);
	self = [super initWithFrame:mediaRect];
	return self;
}

- (void)drawRect:(CGRect)rect {
	CGContextRef context = UIGraphicsGetCurrentContext();	
	[[UIColor whiteColor] set];
	CGContextFillRect(context, rect);	
	CGContextGetCTM(context);
	CGContextScaleCTM(context, 1, -1);
	CGContextTranslateCTM(context, 0, -rect.size.height);	
	page = CGPDFDocumentGetPage(pdfRef, 1);	
	CGRect mediaRect = CGPDFPageGetBoxRect(page, kCGPDFCropBox);
	CGContextScaleCTM(context, rect.size.width / mediaRect.size.width, rect.size.height / mediaRect.size.height);
	CGContextTranslateCTM(context, -mediaRect.origin.x, -mediaRect.origin.y);	
	CGContextDrawPDFPage(context, page);
}

- (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);
	int count = CGPDFDocumentGetNumberOfPages(document);
    if (count == 0) {
		return NULL;
    }
	return document;
}

- (void)dealloc {
    [super dealloc];
}

- (void)reloadView{
	[self setNeedsDisplay];
}

@end

 

分享到:
评论

相关推荐

    java读取pdf文件属性

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

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

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

    Java 读取PDF文件

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

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

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

    pdf.js读取pdf文档

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

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

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

    c# Winform 读取PDF文件

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

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

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

    c#读取pdf中文本内容

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

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

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

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

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

    vb.net 读取pdf 并写入网页

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

    java 读取PDF文件中的内容

    在Java编程环境中,读取PDF文件中的内容是一个常见的任务,特别是在处理文档自动化或者数据分析时。PDF(Portable Document Format)是一种跨平台的文件格式,用于精确地保留文档的格式和内容。下面将详细介绍如何...

    C#编程读取pdf文件

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

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

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

    用Java读取pdf中的数据

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

    c#读取pdf并另存为txt

    在本篇文章中,我们将深入探讨如何使用C#来读取PDF文件并将其内容另存为TXT文件。 首先,要实现这个功能,我们需要一个能够处理PDF文件的库。Adobe提供了一个名为PDF iFilter的组件,可以用于索引和提取PDF内容,但...

    java读取PDF显示于浏览器

    Java读取PDF并显示在浏览器是一项常见的技术需求,特别是在Web应用中,用户可能需要预览或下载PDF文档。为了实现这一功能,我们需要了解几个关键知识点: 1. **PDF阅读器集成**:描述中提到的前提是本地电脑需要...

Global site tag (gtag.js) - Google Analytics