iOS - 开发中加载本地word/pdf文档说明

本文介绍在iOS应用中加载本地PDF和Word文件的两种方法:使用QLPreviewController和UIWebView。通过导入QuickLook框架并设置dataSource,或利用UIWebView加载文件,文章详细展示了具体实现步骤,并提供了代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

最近项目中要加载一个本地的word/pdf等文件比如《用户隐私政策》《用户注册说明》,有两种方法加载

1 > 用QLPreviewController控制器实现

   步骤 : 1 > 导入库文件 : QuickLook.framework

            2 > 导入头文件 : <QuickLook/QuickLook.h>

            3 > 创建我们的对象,然后设置dataSource

2 > 用webView来加载word文件

 

以上两种方法都先把本地word/pdf文件拖入当我们的项目中

 

有时候会出现path为nil,看看是不是没加进Build Phases-Copy Bundle Resources资源

 

/*
 方法1使用:
 1、导入库文件:QuickLook.framework
 2、导入头文件:<QuickLook/QuickLook.h>
 */
#import <QuickLook/QuickLook.h>

@interface ViewController ()<QLPreviewControllerDataSource,UIWebViewDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // 方法1:用QLPreviewController控件实现
    [self QLPreviewControllerLoad];
    
    // 方法2:用WebView的方法加载word
    [self webViewLoad];
    
}

#pragma mark -- QLPreviewController
- (void)QLPreviewControllerLoad {
    self.view.backgroundColor = [UIColor lightGrayColor];
    QLPreviewController *qlpVC = [[QLPreviewController alloc] init];
    qlpVC.dataSource = self;
    [self presentViewController:qlpVC animated:YES completion:nil];
}

- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller {
    return 1;//需要显示文件的个数
}
- (id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"顺道用户隐私政策.docx" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:path];
    return url;
}

#pragma mark -- WebView
- (void)webViewLoad {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"顺道用户隐私政策" ofType:@"docx"];
    NSURL *url = [NSURL fileURLWithPath:path];
    UIWebView *webView = [[UIWebView alloc] init];
    webView.frame = CGRectMake(0, 0, kScreen_width, kScreen_height);
    webView.backgroundColor = [UIColor whiteColor];
    [webView loadRequest:[NSURLRequest requestWithURL:url]];
    [webView sizeToFit];
    webView.scalesPageToFit = YES;
    webView.delegate = self;
    [self.view addSubview:webView];
    
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"webViewDidFinishLoad");
    NSString *javascript = [NSString stringWithFormat:@"var script = document.createElement('script');"
                            "script.type = 'text/javascript';"
                            "script.text = \"function ResizeImages() { "
                            "var myimg;"
                            "var maxwidth=%f;" //缩放系数
                            "for(i=0;i <document.images.length;i++){"
                            "myimg = document.images[i];"
                            "if(myimg.width > maxwidth){"
                            "var scale = myimg.width/myimg.height;"
                            "myimg.width = maxwidth;"
                            "myimg.height = maxwidth/scale;"
                            "}"
                            "}"
                            "}\";"
                            "document.getElementsByTagName('head')[0].appendChild(script);",CGRectGetWidth(webView.frame)];
    [webView stringByEvaluatingJavaScriptFromString:javascript];
    
    //添加调用JS执行的语句
    [webView stringByEvaluatingJavaScriptFromString:@"ResizeImages();"];
}

 



转载于:https://www.cnblogs.com/gongyuhonglou/p/10511682.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值