2010-03-19 5 views
3

J'essaie d'imprimer un PDFDocument que je construis à partir d'une série d'images. Au cas où cela serait important, je fais tout cela dans un plugin Mozilla.PDFView printWithInfo: autoRotate: échoue

je crée le PDFDocument, et le mettre dans un PDFView, j'appelle

[printView printWithInfo: [NSPrintInfo sharedPrintInfo] autoRotate: YES]; 

La boîte de dialogue d'impression arrive (comme une fenêtre séparée, au lieu de panneau. Je suppose que cela vient d'être dans un fenêtre mozilla, donc je n'étais pas trop inquiet à ce sujet.La boîte de dialogue montre mon document, et je peux feuilleter correctement, et tout semble bien

Cependant, lorsque je clique sur "Imprimer" la liste déroulante avec "Mise en page" etc devient vide, et la vue en dessous devient vide La fenêtre ne disparaît pas, et le document n'imprime pas La frappe Annuler fait exactement la même chose. La seule chose que je puisse faire est de quitter Mozillla.

J'ai basé le programme sur PDFKitLinker2 à partir du site de développement Apple, et ce programme fonctionne. Mais je ne peux pas voir de différences significatives entre elle et ma version.

Des suggestions sur où chercher?

merci.

EDIT: Oui, je sais que cela est à peu près une copie exacte de Printing Off-screen PDFViews, mais qui n'a jamais obtenu une réponse suffisante ... (Et je ne l'ai pas remarqué jusqu'à ce que tout à l'heure ...)

+0

Voir des questions similaires: http://stackoverflow.com/questions/30080344/cocoa-osx-pdfview-nsprintoperation-printpanel-not-showing-page-preview/43932633#43932633 et http://stackoverflow.com/questions/2058501/printing-off-screen-pdfviews/43932657 # 43932657 – charles

Répondre

7

Sounds comme vous avez un problème de gestion de la mémoire ici. Avez-vous vérifié le journal de la console pour voir si une exception est levée? Comment créez-vous votre PDFView? Mais pourquoi ne pas le faire comme WebKit le fait?

Plus précisément, déclarer une catégorie sur PDFDocument

@interface PDFDocument (PDFSecretsIKnowViaWebKit) 
- (NSPrintOperation *)getPrintOperationForPrintInfo:(NSPrintInfo *)printInfo autoRotate:(BOOL)doRotate; 
@end 

Ensuite, lorsque vous voulez imprimer PDFDocument simplement obtenir un NSPrintOperation de lui et l'exécuter.

NSPrintOperation *op = [myPDFDoc getPrintOperationForPrintInfo:info autoRotate:YES]; 
[op runOperation]; 
// [op runOperationModalForWindow:delegate:didRunSelector:contextInfo:] if you have a window to attach it to 
+0

Et il n'y a pas de messages dans le journal de la console après avoir appuyé sur le bouton "imprimer". –

+0

Ok, donc encore une autre méthode non documentée que j'ai besoin d'utiliser ... * soupir * Eh bien, au moins cela fonctionne. –

+0

Je vous encouragerais certainement à déposer un bug (http://bugreport.apple.com) demandant que ce comportement soit documenté. Je suis sûr que ça va être marqué comme un dup mais ça sert comme une sorte de vote pour la fonctionnalité. –

1

Cela fonctionne pour moi aussi. J'ai vérifié que getPrintOperationForPrintInfo: autoRotate: existe et semble fonctionner correctement sur 10.4, 10.5 et 10.6.

+0

fonctionne toujours (Yosemite 10.10.5) – Borzh