Експорт Перегляд у форматі PDF з какао

Brad Miller @ Cocoa Dev Central wrote a tutorial regarding Creating PDFs from Cocoa. I tried to follow the tutorial there, but since its rather old (2003) a lot of code was deprecated. I got it to work after some fiddeling, but when I try to export a PDF, the print-dialog shows, and it does not save the PDF to the file I specified.

NSPrintInfo *printInfo;
NSPrintInfo *sharedInfo;
NSPrintOperation *printOp;
NSMutableDictionary *printInfoDict;
NSMutableDictionary *sharedDict;

sharedInfo = [NSPrintInfo sharedPrintInfo];
sharedDict = [sharedInfo dictionary];
printInfoDict = [NSMutableDictionary dictionaryWithDictionary: sharedDict];

[printInfoDict setObject:NSPrintSaveJob
                  forKey:NSPrintJobDisposition];

[printInfoDict setObject:[panel URL] forKey:NSPrintSavePath];

printInfo = [[NSPrintInfo alloc] initWithDictionary:printInfoDict];
[printInfo setHorizontalPagination: NSAutoPagination];
[printInfo setVerticalPagination: NSAutoPagination];
[printInfo setVerticallyCentered:NO];

printOp = [NSPrintOperation printOperationWithView:textView
                                         printInfo:printInfo];

[printOp setShowsProgressPanel:NO];
[printOp runOperation];

Повний код для мого впровадження експортного PDF-файлу тут . Наведений вище код стосується експорту.

Буде дуже щасливим, якщо хтось може побачити, що я роблю неправильно тут ...

3

1 Відповіді

Насправді, я знайшов собі відповідь на мою проблему, коли я знову прочитав це. Проблема полягає в рядку, що містить:

[printInfoDict setObject:[panel URL] forKey:NSPrintSavePath];

Як видно, URL-адреса файлу знайдена там, але вона повинна бути шлях замість URL-адреси. Тому я змінив це до цього:

[printInfoDict setObject:[[panel URL] path] forKey:NSPrintSavePath];

І wham, це працює!

1
додано
Просто швидкий FYI: NSPrintSavePath не підтримується з 10.6 і замінено на NSPrintJobSavingURL , який приймає екземпляр NSURL , тому оригінал [панель URL] буде працювати з цим!
додано Автор Adam, джерело