2013-07-08 3 views
8

So versuche ich derzeit, eine PDF zu drucken, die ich in eine WebView in einer Cocoa-Anwendung geladen habe, die Größe, wo Sie das ganze, was Sie haben, sehen möchten Scrollen. Das Problem ist, dass, wenn er druckt, druckt er nur das, was derzeit in der WebView angezeigt wird und nicht die Gesamtheit der Seite, mit dem Code wie folgt aus:Drucken des gesamten Inhalts von WebView in Cocoa, nicht nur angezeigt

[[[[WebView mainFrame] frameView] documentView] print:sender]; 

Ich bin nicht sicher, wenn ich nur zu drucken versuche der falsche Teil davon, oder muss nur auf eine andere Art und Weise gehen, und würde eine Hilfe sehr schätzen.

+0

Versuchen printDocumentView –

+0

Wie in '[[[WebView mainframe] frameView] printDocumentView]'? Habe nichts gemacht, nicht einmal einen Fehler. Ich sollte auch erwähnen, dass ich festgestellt habe, dass das Problem nur pdfs betrifft und oben bearbeiten wird. – Zoz

Antwort

14

Ich sehe, dass dies eine alte Frage ist, aber da es noch keine Antworten gibt, dachte ich, ich würde dies für jeden zur Verfügung stellen.

NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo]; 

// This is your chance to modify printInfo if you need to change 
// the page orientation, margins, etc 
[printInfo setOrientation:NSLandscapeOrientation]; 

NSPrintOperation *printOperation = [yourWebView.mainFrame.frameView 
            printOperationWithPrintInfo:printInfo]; 

// Open the print dialog 
[printOperation runOperation]; 

// If you want your print window to appear as a sheet instead of a popup, 
// use this method instead of -[runOperation] 
[printOperation runOperationModalForWindow:yourWindow 
            delegate:self 
          didRunSelector:@selector(printDidRun) 
           contextInfo:nil]; 
+2

Ich musste 'NSPaperOrientationLandscape' anstelle von' NSLandscapeOrientation' verwenden – Todd

+2

Ich fand, dass, um den kompletten HTML zu erhalten, es notwendig ist, das documentView zu drucken: yourWebView.mainFrame.frameView.documentView – SarahR

0

Die folgende Swift Code funktioniert für mich:

NSPrintOperation(view: webView.mainFrame.frameView.documentView).runOperation()