2017-02-18 3 views
0

Ich versuche, das PDF zu erstellen und laden Sie dann das PDF in Webview für die Vorschau. Jetzt kann ich das PDF erfolgreich erstellen. Als nächstes möchte ich die PDF erstellen, indem ich die Taste drücke und dann in die Webansicht lade. Ich habe this link und this link referenziert. Obwohl die PDF-Datei erfolgreich erstellt wurde, kann die PDF-Datei nicht in der Webansicht geladen werden. Könnte jemand einen Vorschlag machen? Vielen Dank.ios - erstellen und laden pdf in webview

Der Code:

-(IBAction)preview:(id)sender 
{ 
CGRect rect = [[UIScreen mainScreen] bounds]; 
CGSize screenSize = rect.size; 
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,screenSize.width,screenSize.height)]; 
NSDate*todayDate = [NSDate date]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:@"dd-MM-yyyy "]; 
NSString *mytext = [NSString stringWithFormat:@"form%@",[dateFormatter stringFromDate:todayDate]]; 
[self createPDFfromUIView:_myView saveToDocumentsWithFileName:mytext]; 
NSLog(@"is saved in %@", mytext); 
NSString *path = [self createPDFfromUIView:_myView saveToDocumentsWithFileName:mytext]; 
NSURL *targetURL = [NSURL fileURLWithPath:path]; 
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL]; 
[webView loadRequest:request]; 
} 
-(NSMutableData *)createPDFDatafromUIView:(UIView*)aView 
{ 
NSMutableData *pdfData = [NSMutableData data]; 
UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil); 
UIGraphicsBeginPDFPage(); 
CGContextRef pdfContext = UIGraphicsGetCurrentContext(); 
[aView.layer renderInContext:pdfContext]; 
UIGraphicsEndPDFContext(); 
return pdfData; 
} 
-(NSString*)createPDFfromUIView:(UIView*)aView saveToDocumentsWithFileName:(NSString*)aFilename 
{ 
NSMutableData *pdfData = [self createPDFDatafromUIView:aView]; 
UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil); 
UIGraphicsBeginPDFPage(); 
CGContextRef pdfContext = UIGraphicsGetCurrentContext(); 
[aView.layer renderInContext:pdfContext]; 
UIGraphicsEndPDFContext(); 
NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES); 
NSString* documentDirectory = [documentDirectories objectAtIndex:0]; 
NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:aFilename]; 
[pdfData writeToFile:documentDirectoryFilename atomically:YES]; 
NSLog(@"documentDirectoryFileName: %@",documentDirectoryFilename); 
NSLog(@"saved in %@", documentDirectoryFilename); 
return documentDirectoryFilename; 
} 

Antwort

1
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,screenSize.width,screenSize.height)]; 

ich nirgendwo sehen, wo man tatsächlich die UIWebView als subView hinzuzufügen.

[self.view addSubview:webView]; 

Auch. Sie sollten die UIWebView zu einer property hinzufügen, anstatt sie zuzuteilen/zu erstellen, jedes Mal, wenn jemand eine Taste drückt.

@property (strong, nonatomic) UIWebView *webView; 

Endlich:

Sie sollten eine WKWebView verwenden anstelle eines UIWebView wie in Apple-Dokumentation erwähnt:

Ab iOS 8.0 und OS X 10.10 verwenden WKWebView Webinhalte hinzufügen zu deiner App Verwenden Sie nicht UIWebView oder WebView.

EDIT:

Für Menschen, die dies lesen, die in das Problem tatsächlich läuft, wie die Frage impliziert eigentlich diese Themen auf der gleichen Frage prüfen:

Load text+pdf file in uiwebview

iPhone : can we open pdf file using UIWebView?

how to load pdf file in UIWebview center

Display local pdf file in UIWebView in iphone

Loading Local PDF File Into WebView

+0

Sie darüber in Kommentar darauf hindeutet Sind diese Frage ist ein Duplikat? Wenn ja, verstehe ich die nicht-enge Abstimmung oder die Antwort nicht. – danh

+0

@danh Ich hatte die Duplikatflagge schon vor dem Absenden dieser Antwort eingezogen, nachdem ich den Code durchgelesen hatte. Ich sah alle Fehler, die überhaupt nichts mit der Frage zu tun hatten. Ich nahm mir die Zeit, um ihm die Lösung zu geben Dort für zukünftige Referenz, wenn jemand diese Frage mit dem eigentlichen Problem auf die Frage stieß. –

+0

Ich verstehe. Vielleicht diese Antwort mit diesen Links als weitere Referenz verbessern? Dann kann der duplizierende Kommentar weggehen. – danh

0

Sie können den Apple Schnell Look Rahmen verwenden, um die pdf in der Vorschau anzeigen. Sie erhalten außerdem die Freigabeoption, mit der Benutzer die PDF-Datei per E-Mail freigeben oder für spätere Verweise auf iBooks speichern können.

Sie können meinen Blog link für eine vollständige Beschreibung finden