PDF Просмотреть printWithInfo:autoRotate: не удается
Я пытаюсь напечатать PDFDocument, который я строю из серии изображений. В случае, если это имеет значение, я делаю все это из плагина Mozilla.
Я создаю PDFDocument и помещаю его в PDFView, затем вызываю
[printView printWithInfo: [NSPrintInfo sharedPrintInfo] autoRotate: YES];
Откроется диалоговое окно печати (как отдельное окно вместо панели. Я предполагаю, что это происходит из окна Mozilla, поэтому я не слишком беспокоился об этом. Диалог показывает мой документ, и я могу просматривать его правильно и все выглядит хорошо.
Однако, когда я нажимаю "Печать", выпадающий список "Макет" и т. Д. Становится пустым, а представление под ним становится пустым. Окно не исчезает, а документ не печатается. Нажатие кнопки "Отмена" делает то же самое. Единственное, что я могу сделать, это принудительно бросить Мозиллу.
Я основал программу на PDFKitLinker2 с сайта Apple, и эта программа работает. Но я не вижу каких-либо существенных различий между ним и моей версией.
Любые предложения о том, где искать?
Благодарю.
РЕДАКТИРОВАТЬ: Да, я знаю, что это в значительной степени точная копия Печать закадровых PDFViews, но это никогда не получал достаточного ответа... (И я не заметил это до сих пор...)
2 ответа
Похоже, у вас есть проблема с управлением памятью здесь. Вы проверили журнал консоли, чтобы увидеть, есть ли исключение? Как вы создаете свой PDFView
?
Но почему бы не сделать это так, как это делает WebKit?
В частности, объявить категорию на PDFDocument
@interface PDFDocument (PDFSecretsIKnowViaWebKit)
- (NSPrintOperation *)getPrintOperationForPrintInfo:(NSPrintInfo *)printInfo autoRotate:(BOOL)doRotate;
@end
Затем, когда вы хотите распечатать PDFDocument
просто получить NSPrintOperation
от этого и запустить его.
NSPrintOperation *op = [myPDFDoc getPrintOperationForPrintInfo:info autoRotate:YES];
[op runOperation];
// [op runOperationModalForWindow:delegate:didRunSelector:contextInfo:] if you have a window to attach it to
Это работает и для меня. Я проверил, что getPrintOperationForPrintInfo:autoRotate: существует и, кажется, работает правильно на 10.4, 10.5 и 10.6.