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
分享到:
相关推荐
在IT领域,特别是Java编程中,读取PDF文件的元数据是一项常见的需求,尤其是在文档管理、内容管理系统或任何需要处理大量文档的应用场景中。本文将深入探讨如何使用Java读取PDF文件的属性,如作者、标题等元数据,...
本主题聚焦于利用C#处理PDF文档,包括生成PDF、读取PDF文本内容以及获取PDF内的图片。以下是对这些知识点的详细阐述: ### 1. C#生成PDF 生成PDF文件通常需要借助第三方库,因为.NET Framework的标准库并不直接...
在Java编程环境中,读取PDF文件是一项常见的任务,特别是在开发桌面应用或需要处理PDF文档内容时。本篇文章将深入探讨如何使用Java来读取PDF文件,并将其内容展示在一个由JFrame和JPanel构建的GUI窗口中。 首先,...
本篇文章将详细探讨如何使用C#编程语言结合Spire.Pdf库来读取PDF文件的内容,并将其转换为JSON文本对象,特别针对那些仅包含可编辑文字的PDF文件。 首先,Spire.Pdf是一款强大的.NET PDF组件,它提供了丰富的API,...
在“pdf.js读取pdf文档”的场景中,我们主要会涉及到以下几个关键知识点: 1. PDF.js库的使用: PDF.js提供了API来加载、解析和显示PDF文件。开发者可以通过调用`PDFJS.getDocument(url)`方法来加载PDF文档,然后...
在C# Winform环境下,开发一个能够高效读取PDF文件的应用是常见的需求。通常,我们可能会选择使用WebBrowser控件来展示PDF,但这并非最佳方案,因为它依赖于系统中的Adobe Acrobat Reader,且性能可能不尽人意。本...
在.NET环境中,C#开发人员经常需要处理PDF文档,包括生成PDF、读取PDF文本以及提取PDF中的图像。为了实现这些功能,通常会借助于第三方库或DLL,因为.NET框架本身并不内置完整的PDF处理能力。本教程将详细介绍如何...
在.NET开发环境中,生成PDF、读取PDF文本内容以及获取PDF内的图片是常见的需求,尤其在文档处理和报告生成的应用中。本文将详细介绍如何利用C#进行这些操作,并提供相关库和技术的概述。 首先,生成PDF文件在.NET中...
本篇文章将围绕“C#读取PDF中文本内容”这一主题,详细介绍如何使用Spire.Pdf插件来解决这个问题。 首先,Spire.Pdf是一款强大的.NET PDF组件,它提供了全面的PDF创建、编辑和阅读功能,包括读取PDF中的文本内容。...
本主题聚焦于利用C#处理PDF文档,包括生成PDF文档、读取PDF文本内容以及提取PDF内的图片。以下将详细介绍这些知识点。 1. **生成PDF**: 在C#中生成PDF文档,我们可以使用开源库如iTextSharp或PDFsharp。...
本主题聚焦于利用C#处理PDF文档,包括生成PDF、读取PDF文本内容以及提取PDF内的图片。以下是对这些知识点的详细阐述: 1. **C# 生成PDF**: 在C#中生成PDF文档,可以借助多种第三方库,如iTextSharp、PDFsharp、...
在Java编程环境中,读取PDF文件中的内容是一个常见的任务,特别是在处理文档自动化或者数据分析时。PDF(Portable Document Format)是一种跨平台的文件格式,用于精确地保留文档的格式和内容。下面将详细介绍如何...
Adobe提供了免费的PDF iFilter,它允许程序以文本格式读取PDF内容。然而,对于更复杂的操作,如渲染PDF页面,我们需要使用专门的库,如iTextSharp或PDFsharp。这些库提供了API,可以读取、修改和创建PDF文件。 **1....
下面我们将深入探讨如何使用C#和PDFBox的IKVM版本来读取PDF文件: 1. **安装IKVM**: 首先,你需要获取PDFBox的Java库,并且下载IKVM的.NET版本。将IKVM的dll文件添加到你的C#项目引用中,同时也要包含PDFBox的Java...
C++程序读取PDF中的文本。Adobe允许你提交PDF文件,提取成文本或HTML后再通过邮件发送给你。但是假如你需要自己提取文本或在程序中加入这个功能的话,需要花费很多时间。也许你还需要对文本应用某些特殊格式(如,...
Java作为一种强大的编程语言,提供了多种库来处理PDF文档,其中一个关键任务是读取PDF中的数据。本篇文章将详细介绍如何使用Java进行PDF数据的读取,并围绕`PdfReader`这个概念展开。 首先,`PdfReader`通常指的是...
在本篇文章中,我们将深入探讨如何使用C#来读取PDF文件并将其内容另存为TXT文件。 首先,要实现这个功能,我们需要一个能够处理PDF文件的库。Adobe提供了一个名为PDF iFilter的组件,可以用于索引和提取PDF内容,但...
在Android平台上,生成和读取PDF文件是一项常见的需求,特别是在数据导出、报告生成或文档共享等场景。iText是一个强大的开源库,它允许开发者在Java和.NET环境中创建、编辑和处理PDF文档。在这个场景中,我们将探讨...
在网页上在线读取PDF文件是一项常见的需求,尤其在文档分享和阅读平台中。这个主题主要涉及的技术点包括Web开发、浏览器对PDF的支持以及相关的JavaScript库。以下是对这些知识点的详细说明: 1. **PDF(Portable ...