How to zoom webView with pdf file - objective-c

How to get zoom in UIWebView.
I loaded pdf file from resource bundle in a UIWebView.
Now trying to zoom the webview. so its will get zooming effect to the pdf file.
So.
How can i zoom the UIWebView.
Any sample example. Please help me out.

Just use the following code:
self.pdfviewwebview.scalesPageToFit = YES;
self.pdfviewwebview.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
self.pdfviewwebview.delegate = self;
The most tricky thing here which most people forget is to set the webview's delegate,so take care about that.

UIWebView *tempWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, self.view.bounds.size.height)];
tempWebView.backgroundColor = [UIColor whiteColor];
**tempWebView.scalesPageToFit = YES; //this enables the zooming**
tempWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
tempWebView.delegate = self;
[self.view addSubview:tempWebView];
[self setWebView:tempWebView];
NSString *path = [[NSBundle mainBundle] pathForResource:#"your_file" ofType:#"pdf"];
NSURL *targetURL = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[self.webView loadRequest:request];

A pinch-to-zoom gesture can be simulated by holding down the Option key. On your simulator, two grey circles will appear indicating that its simulating a multi-touch, pinch-to-zoom gesture.

Related

HTTP load failed and I have tried all of the SO suggestions, but nothing works

Error 9802 is a "Fatal Alert" according to the Apple's docs. I have looked at Google and SO and found nothing referencing 9802 that fixes this problem. I can change my code to go for "apple.com" and I get the page, but using my own URL, I get the error above. I have tried everything that I can think of, and nothing works. Time to ask for help! :D
The result of using
/usr/bin/nscurl --ats-diagnostics https://pragerphoneapps.com
is all tests fail (results are uploaded here)
This is an image of my app's .plist file (only pertinent part)
and this is an image of the target info:
And this is my code:
- (IBAction)showHTMLHelp:(UIButton *)sender {
// make the popover
UIViewController* popoverContent = [UIViewController new];
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 450, 500)];
popoverView.backgroundColor = [UIColor colorWithWhite:(CGFloat)1.0 alpha:(CGFloat)1.0]; // frame color?
popoverContent.view = popoverView;
//resize the popover view shown in the current view to the view's size
popoverContent.preferredContentSize = CGSizeMake(450, 500);
NSString *urlAddress = #"https://pragerphoneapps.com"; // #"https://www.pragerphoneapps.com/bookstore-inventory-manager/upload-help/";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
// add the UIWebView for RichText
UIWebView *webView = [[UIWebView alloc] initWithFrame: popoverView.frame];
webView.backgroundColor = [UIColor whiteColor]; // change background color here
// add the webView to the popover
[webView loadRequest:requestObj];
[popoverView addSubview:webView];
// if previous popoverController is still visible... dismiss it
if ([popoverController isPopoverVisible]) {
[popoverController dismissPopoverAnimated:YES];
}
//create a popover controller
popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];
[popoverController presentPopoverFromRect:((UIButton *)oShowHelp).frame inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
I seriously recommend you to fix your SSL certificate.
ATS requires you to have a valid SSL certificate, TLS version 1.2 or above and support for forward secrecy.
This will be a requirement at the beginning of 2017 so better get ready.
Anyway, meanwhile try the following steps to get this working.
Put this on top of your file:
#interface NSURLRequest (InvalidSSLCertificate)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;
#end
Disable App Transport Security in Info.plist.
Allow invalid SSL certificates before loading request:
[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
Sample code that successfully loads your site:
NSString *urlAddress = #"https://pragerphoneapps.com"; // #"https://www.pragerphoneapps.com/bookstore-inventory-manager/upload-help/";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
UIWebView *webView = [[UIWebView alloc] initWithFrame: self.view.frame];
webView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:webView];
[webView loadRequest:requestObj];
I wonder why it can't work for setting "NSAllowArbitraryLoads to YES".If there are caches, try to reboot your Mac or Xcode.
And your "Exception Domains" settings have the wrong format.

Display a .pdf in an iOS app without downloading it from the internet

I'm looking to package a .pdf file with my app so that users can view it on one of the app's tabbed UIViews. Most of the posts I've read explain how to display a .pdf that must be downloaded first from the internet. My question is: how do you access a .pdf that is packaged with the app and display it on a UI(Web)View (with no internet access/download required)?
EDIT: This snippet was the key (where "ReadFile.pdf" was .pdf added to the project):
NSString *urlAddress = [[NSBundle mainBundle] pathForResource:#"ReadFile" ofType:#"pdf"];
This is what you should do:
– (void) displayLocalPdfInWebView
{
CGRect rect = [[UIScreen mainScreen] bounds];
CGSize screenSize = rect.size;
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,screenSize.width,screenSize.height)];
webView.autoresizesSubviews = YES;
webView.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
NSString *urlAddress = [[NSBundle mainBundle] pathForResource:#"JaapSahib-Gurmukhi" ofType:#"pdf"];
NSURL *url = [NSURL fileURLWithPath:urlAddress];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[webView loadRequest:urlRequest];
[window addSubview:webView];
[webView release];
}
Source: http://www.developerfeed.com/how-display-local-pdf-file-ios-uiwebview/
What this will essentially do is:
Create a CGRect to set the screen bounds
Allow autoresizing
Set the UIWebView to to a resource
Load the file into the UIWebView
Comment, and tell me how it goes!

Override tap gesture in tttaributredlabel link

In my application , I have a tttattributedlabel detect link and open in web view . if I set uitapgesture on this attributed label then gesture is always fire .
link is not working in any case if tap gesture set on attributed label .
You can try with it.
NSString *pathStr=#"http://stackoverflow.com/questions/29427320/override-tap-gesture-in-tttaributredlabel-link?noredirect=1#comment47025717_29427320";
if ([pathStr hasPrefix:#"http"]) {
UIWebView *myWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
myWebView.autoresizesSubviews = YES;
myWebView.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
NSURL *myUrl = [NSURL URLWithString:pathStr];
NSMutableURLRequest *myRequest = [NSMutableURLRequest requestWithURL:myUrl];
[myWebView loadRequest:myRequest];
myWebView.delegate=self;
[self.view addSubview: myWebView];
}

Javascript return a string to objective c

i got a webview and i would like to capture an input from a webview HTML form. i have tried but i cant can some one help me please
this is my webview code
// Init Web View
UIWebView *webView;
webView = [[UIWebView alloc] initWithFrame:boundsRect];
webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
webView.scalesPageToFit = YES;
webView.contentMode = UIViewContentModeCenter;
webView.multipleTouchEnabled = NO;
webView.userInteractionEnabled = YES;
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
[self addSubview:webView];
[webView release];
return self;
To get value from webView, i used below code.
NSString* value = [webView stringByEvaluatingJavaScriptFromString:#"document.getElementById('text').value"]‌​;
NSLog(#"got: %#",value);
You could look into how phonegap http://phonegap.com/ solves this.

UIWebView sharp corners

I have an UIWebView with and using QuartzCore to add some style to this. But when i'm execute:
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 10, self.view.bounds.size.width-20.0, self.view.bounds.size.height-30.0)];
NSString *urlAddress = #"http://www.google.com/";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
webView.layer.cornerRadius = 10;
webView.layer.borderColor = [UIColor whiteColor].CGColor;
webView.layer.borderWidth = 3.0f;
[self.view addSubview:webView];
I get an rounder View but content is sharp. There is a way to roundend corners in content in WebView
The content view is actually the scrollView of UIWebView, so
webView.scrollView.layer.cornerRadius = 10;
Agreed with #graver Answer but not completely Coz His working will not work on iphone 3g and iPod 2nd generation .
webView.layer.cornerRadius = 10;
[webView setClipsToBounds:YES];
ClipsToBound will simple resize all the subviews under webView.