Hallo miteinander,
ich programmiere nun seit längerer Zeit zum ersten mal wieder eine kleine App.
Mit dieser möchte ich PDFs exportieren. Dazu erstelle ich HTML-Code, der in einem WebView dargestellt werden soll, und dessen Inhalt ich dann mit NSPrintOperation in ein PDF umwandle.
Vorgeschichte:
Zunächst habe ich das WebView programmatisch erstellt und meinen HTML-String mittels
geladen und gedruckt. Allerdings wurde nur eine leere Seite ausgegeben.
Eine Recherche ergab, dass es scheinbar einen Bug in Leopard gab, der genau dies bewirkte und umgangen werden konnte, indem man ein WebView per IB erstellt und das IBOutlet anspricht. Das habe ich dann auch mal ausprobiert (obwohl ich 10.7 benutze), bekam aber immernoch eine leere Seite.
Problem:
Mittlerweile habe ich festgestellt, dass das WebView gar keinen Inhalt lädt, weder mit der obigen Methode, noch per -loadRequest: oder -setMainFrameURL:
Dass das Outlet richtig gelingt ist, habe ich überprüft, das Fenster, in das WebView ist, lässt sich über dieses ansteuern.
Woran könnte das liegen?
Alles anzeigen
ich programmiere nun seit längerer Zeit zum ersten mal wieder eine kleine App.
Mit dieser möchte ich PDFs exportieren. Dazu erstelle ich HTML-Code, der in einem WebView dargestellt werden soll, und dessen Inhalt ich dann mit NSPrintOperation in ein PDF umwandle.
Vorgeschichte:
Zunächst habe ich das WebView programmatisch erstellt und meinen HTML-String mittels
geladen und gedruckt. Allerdings wurde nur eine leere Seite ausgegeben.
Eine Recherche ergab, dass es scheinbar einen Bug in Leopard gab, der genau dies bewirkte und umgangen werden konnte, indem man ein WebView per IB erstellt und das IBOutlet anspricht. Das habe ich dann auch mal ausprobiert (obwohl ich 10.7 benutze), bekam aber immernoch eine leere Seite.
Problem:
Mittlerweile habe ich festgestellt, dass das WebView gar keinen Inhalt lädt, weder mit der obigen Methode, noch per -loadRequest: oder -setMainFrameURL:
Dass das Outlet richtig gelingt ist, habe ich überprüft, das Fenster, in das WebView ist, lässt sich über dieses ansteuern.
Woran könnte das liegen?
Quellcode
- -(void)exportRegistrationAsPDF:(NSDictionary *)data at:(NSSavePanel *)savePanel {
- NSString *html = [self generateRegistration:data];
- NSPrintInfo *printInfo;
- NSPrintOperation *printOp;
- NSMutableDictionary *printInfoDict = [NSMutableDictionary dictionary];
- printInfoDict = [NSMutableDictionary dictionaryWithDictionary:[[NSPrintInfo sharedPrintInfo] dictionary]];
- [[self.webView mainFrame] loadHTMLString:html baseURL:[NSURL URLWithString:@"localhost"]];
- [[[[self.webView mainFrame] frameView] documentView] setNeedsLayout:YES];
- [self.webView setNeedsDisplay:YES];
- while([[[self.webView mainFrame] provisionalDataSource] isLoading])
- [[NSRunLoop currentRunLoop] limitDateForMode:@"NSDefaultRunLoopMode"];
- while([[[self.webView mainFrame] dataSource] isLoading])
- [[NSRunLoop currentRunLoop] limitDateForMode:@"NSDefaultRunLoopMode"];
- [printInfoDict setObject:NSPrintSaveJob forKey:NSPrintJobDisposition];
- [printInfoDict setObject:[[[savePanel URL] path] stringByAppendingString:@".pdf"] forKey:NSPrintSavePath];
- printInfo = [[NSPrintInfo alloc] initWithDictionary:printInfoDict];
- [printInfo setHorizontalPagination:NSFitPagination];
- [printInfo setVerticalPagination:NSAutoPagination];
- [printInfo setVerticallyCentered:NO];
- printOp = [NSPrintOperation printOperationWithView:[[[self.webView mainFrame] frameView] documentView] printInfo:printInfo];
- [printOp setShowsPrintPanel:NO];
- [printOp setShowsProgressPanel:YES];
- [printOp runOperation];
- }
Skeiron
Der Mac heiligt die Mittel.
Der Mac heiligt die Mittel.