Pouvons-nous ouvrir un fichier pdf en utilisant UIWebView sur iOS?

106

Pouvons-nous ouvrir le fichier pdf depuis UIWebView?

MohammedYakub Moriswala
la source

Réponses:

278

Oui, cela peut être fait avec UIWebView.

Si vous essayez d'afficher un fichier PDF résidant sur un serveur quelque part, vous pouvez simplement le charger directement dans votre vue Web:

Objectif c

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 10, 200, 200)];

NSURL *targetURL = [NSURL URLWithString:@"https://www.example.com/document.pdf"];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[webView loadRequest:request];

[self.view addSubview:webView];

Rapide

let webView = UIWebView(frame: CGRect(x: 10, y: 10, width: 200, height: 200))

let targetURL = NSURL(string: "https://www.example.com/document.pdf")! // This value is force-unwrapped for the sake of a compact example, do not do this in your code
let request = NSURLRequest(URL: targetURL)
webView.loadRequest(request)

view.addSubview(webView)

Ou si vous avez un fichier PDF fourni avec votre application (dans cet exemple nommé "document.pdf"):

Objectif c

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 10, 200, 200)];

NSURL *targetURL = [[NSBundle mainBundle] URLForResource:@"document" withExtension:@"pdf"];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[webView loadRequest:request];

[self.view addSubview:webView];

Rapide

let webView = UIWebView(frame: CGRect(x: 10, y: 10, width: 200, height: 200))

let targetURL = NSBundle.mainBundle().URLForResource("document", withExtension: "pdf")! // This value is force-unwrapped for the sake of a compact example, do not do this in your code
let request = NSURLRequest(URL: targetURL)
webView.loadRequest(request)

view.addSubview(webView)

Vous pouvez trouver plus d'informations ici: QA1630 technique: Utilisation de UIWebView pour afficher certains types de documents .

Alleus
la source
merci beaucoup ... alleus. pouvons-nous l'enregistrer dans le répertoire de documents local de l'iPhone?
MohammedYakub Moriswala
3
Oui, c'est possible, mais vous devez utiliser une autre méthode de récupération du document autre qu'une WebView. Recherchez-le ici sur Stack Overflow. Par exemple: stackoverflow.com/questions/2102267/…
alleus
Est-il possible de donner l'option d'impression ici
Siva
Ici, les pages Pdf sont répertoriées dans le sens vertical, il est possible de les afficher dans le sens horizontal, sans défilement vertical.
kunjus
@ MartinAlléus: pouvez-vous s'il vous plaît m'aider avec ce stackoverflow.com/questions/21874538/…
Manthan
12

UIWebviews peut également charger la méthode .pdfusing loadData, si vous l'acquérez comme NSData:

[self.webView loadData:self.pdfData 
              MIMEType:@"application/pdf" 
      textEncodingName:@"UTF-8" 
               baseURL:nil];
Yunus Nedim Mehel
la source
9

utilisez ceci pour ouvrir un fichier pdf dans la vue Web

NSString *path = [[NSBundle mainBundle] pathForResource:@"mypdf" ofType:@"pdf"];
NSURL *targetURL = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
UIWebView *webView=[[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 300, 300)];
[[webView scrollView] setContentOffset:CGPointMake(0,500) animated:YES];
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(0.0, 50.0)"]];
[webView loadRequest:request];
[self.view addSubview:webView];
[webView release];
sinh99
la source
3
NSString *folderName=[NSString stringWithFormat:@"/documents/%@",[tempDictLitrature objectForKey:@"folder"]];
NSString *fileName=[tempDictLitrature objectForKey:@"name"];
[self.navigationItem setTitle:fileName];
NSString *type=[tempDictLitrature objectForKey:@"type"];

NSString *path=[[NSBundle mainBundle]pathForResource:fileName ofType:type inDirectory:folderName];

NSURL *targetURL = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
webView=[[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 1024, 730)];
[webView setBackgroundColor:[UIColor lightGrayColor]];
webView.scalesPageToFit = YES;

[[webView scrollView] setContentOffset:CGPointZero animated:YES];
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(0.0, 50.0)"]];
[webView loadRequest:request];
[self.view addSubview:webView];
Dheerendra
la source
Veuillez d'abord créer le chemin de votre pdf et le convertir en URL et utiliser ce code pour charger la vue Web, cela fonctionne pour moi, veuillez donc l'utiliser dans votre code
dheerendra
2

Version Swift:

if let docPath = NSBundle.mainBundle().pathForResource("sample", ofType: "pdf") {
    let docURL = NSURL(fileURLWithPath: docPath)
    webView.loadRequest(NSURLRequest(URL: docURL))
}
SoftDesigner
la source
2

Une mise à jour de la réponse de Martin Alléus, pour obtenir le plein écran que ce soit un téléphone ou un iPad sans avoir à coder en dur:

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];
TharakaNirmana
la source
2

Swift 4

     let webView = UIWebView(frame: view.bounds)
    let targetURL = Bundle.main.url(forResource: "sampleFileName", withExtension: "pdf")
    let request = URLRequest(url: targetURL!)
    webView.loadRequest(request)
    view.addSubview(webView)
Ekra
la source
1
NSString *path = [[NSBundle mainBundle] pathForResource:@"document" ofType:@"pdf"];
NSURL *targetURL = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[webView loadRequest:request];
Ved Rauniyar
la source
0
UIWebView *pdfWebView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 10, 200, 200)];

NSURL *targetURL = [NSURL URLWithString:@"http://unec.edu.az/application/uploads/2014/12/pdf-sample.pdf"];
    NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
    [pdfWebView loadRequest:request];
    [self.view addSubview:pdfWebView];
Kiran Bhoraniya
la source
0

WKWebView : Je trouve que cette question est le meilleur endroit pour faire savoir aux gens qu'ils devraient commencer à utiliser WKWebview car UIWebView est maintenant obsolète .

Objectif c

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame];
webView.navigationDelegate = self;
NSURL *nsurl=[NSURL URLWithString:@"https://www.example.com/document.pdf"];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[webView loadRequest:nsrequest];
[self.view addSubview:webView];

Rapide

let myURLString = "https://www.example.com/document.pdf"
let url = NSURL(string: myURLString)
let request = NSURLRequest(URL: url!)  
let webView = WKWebView(frame: self.view.frame)
webView.navigationDelegate = self
webView.loadRequest(request)
view.addSubview(webView)

Je n'ai pas copié ce code directement à partir de Xcode, il se peut donc qu'il contienne une erreur de syntaxe. Veuillez vérifier lors de son utilisation.

Shobhit C
la source