2015-03-24 5 views
11

Ich versuche, den Inhalt einer WkWebView zu drucken, aber wenn das Druckfeld angezeigt wird, ist die Druckvorschau leer. HierInhalt von WKWebView (OS X) drucken

ist der Code:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init]; 
    _webView = [[WKWebView alloc] initWithFrame:self.webViewOutlet.frame configuration:config]; 
    [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.google.com"]]]; 
    [_webViewOutlet addSubview:_webView]; 
    _webView.navigationDelegate = self; 

} 

Ich habe einen Auslass für die WKWebView so kann ich sehen, ob es geladen wird und ich setze den print Anruf in die didFinishNavigation Delegatmethode wie dies nur sicher sein:

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation 
{ 
    [self.webView print:nil]; 
} 

Egal welche Seite, die Druckvorschau ist immer eine leere Seite. Ich habe auch versucht, NSPrintOperation s und die Ergebnisse waren die gleichen - Druckvorschau und gespeicherte PDFs waren leere Seiten.

Irgendwelche Ideen, was ich falsch mache? Gibt es eine andere Möglichkeit, WKWebView in PDF zu konvertieren/konvertieren? Vorschläge sind willkommen. Danke.

+1

siehe [Wie funktioniert ein Druck ein WKWebView auf OSX] (http://stackoverflow.com/questions/33319295/how-does-one-print-a-wkwebview-on -osx) und http://www.openradar.me/23649229 –

Antwort

-4

Sie können den Inhalt von WKWebView mit viewPrintFormatter ausdrucken. Hier ist der Beispielcode:

if ([UIPrintInteractionController isPrintingAvailable]) 
{ 
    UIPrintInfo *pi = [UIPrintInfo printInfo]; 
    pi.outputType = UIPrintInfoOutputGeneral; 
    pi.jobName = @"Print"; 
    pi.orientation = UIPrintInfoOrientationPortrait; 
    pi.duplex = UIPrintInfoDuplexLongEdge; 

    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; 
    pic.printInfo = pi; 
    pic.showsPageRange = YES; 
    pic.printFormatter = self.webView.viewPrintFormatter; 
    [pic presentFromBarButtonItem:barButton animated:YES completionHandler:^(UIPrintInteractionController *printInteractionController, BOOL completed, NSError *error) { 
     if(error) 
      NSLog(@"handle error here"); 
     else 
      NSLog(@"success"); 
    }]; 
} 
+1

UIPrintInteractionController ist unter OSX NICHT verfügbar. Es ist nur unter iOS verfügbar. –

+0

Ja, Sie haben Recht, diese Antwort gilt nur für iOS. –