如何在UIWebview中居中加载PDF文件

3

我是iOS开发的新手。我正在尝试在UIWebview中显示一个居中的PDF。我在mainbundle中有一个PDF文件。下面是当在UIWebView中加载时我的PDF的样子:(我将棕色渐变作为UIWebView的背景,以便您更好地看到我的意思)。 enter image description here

- (void)viewDidLoad
{
UIWebView *theWebView = [[UIWebView alloc] initWithFrame:[self.view bounds]];
[theWebView setContentMode:UIViewContentModeScaleAspectFit];
[theWebView setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];
[theWebView setScalesPageToFit:YES];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"pdf"];
NSURL *filePathURL = [NSURL fileURLWithPath:filePath];
[theWebView loadRequest:[NSURLRequest requestWithURL:filePathURL]];

[self.view addSubview:theWebView];
[super viewDidLoad];
}

我想将其居中,以便底边距与顶边距相同。如果使用PDF(本地),我应该如何做?


UIWebView不应该像那样使用。寻找PDF查看器/解析器,类似于https://github.com/vfr/Reader。 - Nimrod Gutman
@NimrodGutman,是否可以使用HTML代码将PDF文件加载到UIWebView中心? - Ravindhiran
你已经在某个地方看到了这个截图...你已经就同样的问题提出了任何问题吗? - Master Stroke
@iOSCoder 是的,但不完全相同。之前问过如何在UIWebView中全屏加载PDF文件。 - Ravindhiran
@Ravindhiran...你觉得怎么样在一个灰色背景的(1)视图1中心添加(2)webview? - Master Stroke
@iOSCoder,我已经更新了我的问题,请现在检查一下。 - Ravindhiran
2个回答

1
CGRect rect = [[UIScreen mainScreen] bounds];
    CGSize screenSize = rect.size;
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,screenSize.width,screenSize.height)];

    NSString *path = [[NSBundle mainBundle] pathForResource:@"pdf" ofType:@"pdf"];
    NSURL *targetURL = [NSURL fileURLWithPath:path];
    NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
    [webView loadRequest:request];

    [self.view addSubview:webView];

0

不确定这是否是您问题的理想解决方案。

首先获取PDF的宽度和高度==>

float width = CGPDFPageGetBoxRect(PageRef, kCGPDFMediaBox).size.width;

float height = CGPDFPageGetBoxRect(PageRef, kCGPDFMediaBox).size.height;

其中Pageref是PDF页面引用。

CGSize pdfSize = CGSizeMake(width, height);

//Create one superView to webview

UIView *supView = [[UIView alloc] initWithFrame:[self.view bounds]];
supView.backgroundColor=[UIColor colorWithRed:0.663 green:0.855 blue:0.341 alpha:1]

//然后是webview

UIWebView *theWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0, pdfSize.width, pdfSize.height)]];
    [theWebView setContentMode:UIViewContentModeScaleAspectFit];
    [theWebView setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];
    [theWebView setScalesPageToFit:YES];
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"pdf"];
    NSURL *filePathURL = [NSURL fileURLWithPath:filePath];
    [theWebView loadRequest:[NSURLRequest requestWithURL:filePathURL]];
    [supView addSubview: theWebView];

    [self.view addSubview: supView];

编辑:

获取Pageref(部分),

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"pdf"];
    NSURL *filePathURL = [NSURL fileURLWithPath:filePath];

CFURLRef pdfURL = (__bridge CFURLRef)[[NSURL alloc] initFileURLWithPath:filePath];
//file ref
CGPDFDocumentRef pdfDocRef = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL);

CGPDFPageRef PageRef = CGPDFDocumentGetPage(pdfDocRef, 1);

float width = CGPDFPageGetBoxRect(page1, kCGPDFMediaBox).size.width;

float height = CGPDFPageGetBoxRect(page1, kCGPDFMediaBox).size.height;

NSLog(@"%f %f",height,width);

我不想动态更改UIWebview的框架。它是固定的框架,为什么呢?因为如果用户想要缩放PDF文件,它应该扩展全屏幕。 - Ravindhiran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接