В приложении, которое я создаю, я загружаю длинную страницу HTML в webView, а затем распечатываю ее в PDF, используя следующее:
-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
if ([frame isEqual:[[self doc] mainFrame]])
{
NSMutableData *newData = [[NSMutableData alloc] init];
NSPrintInfo *newInfo = [NSPrintInfo sharedPrintInfo];
NSView *docView = [[[[self doc] mainFrame] frameView] documentView];
NSPrintOperation *newPrintOp = [NSPrintOperation PDFOperationWithView:docView insideRect:docView.bounds toData:newData printInfo:newInfo];
BOOL runPrint = [newPrintOp runOperation];
if (!runPrint)
{
NSLog(@"Print Failed");
}
PDFDocument *newDoc = [[PDFDocument alloc] initWithData:newData];
[newData release];
[self setPdf:newDoc];
//Other code here
}
}
Проблема в том, что когда я смотрю на newDoc
, это огромный PDF-файл одной страницы. Я бы предпочел, чтобы печать работала так же, как в диалоговом окне «Сохранить как PDF ...», то есть разбивала PDF на несколько страниц разумного размера.
Кто-нибудь знает, как этого добиться?
Я попытался вставить следующее после NSPrintInfo *newInfo = [NSPrintInfo sharedPrintInfo];
[newInfo setVerticalPagination:NSAutoPagination];
[newInfo setHorizontalPagination:NSAutoPagination];
NSAutoPagination описывается в документации следующим образом:
NSAutoPagination
Изображение делится на прямоугольники одинакового размера и размещается в одном столбце страниц.
Доступный в Mac OS X v10.0 и позже.
Объявлено в NSPrintInfo.h.
Это не повлияло на напечатанный PDF.