W aplikacji tworzę, załadować długą stronę HTML w Webview a następnie wydrukować go do formatu PDF przy użyciu następujących:Cocoa strona PDF dzielenie
-(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
}
}
Problemem jest to, że kiedy patrzę pod numerem newDoc
jest to ogromny plik PDF z jedną stroną. Wolałbym, aby druk działał tak samo, jak w oknie "zapisz jako plik PDF ...", czyli dzieli plik PDF na wiele stron o rozsądnej wielkości.
Czy ktoś wie, jak to osiągnąć?
I próbował wstawienie następujących po NSPrintInfo *newInfo = [NSPrintInfo sharedPrintInfo];
[newInfo setVerticalPagination:NSAutoPagination];
[newInfo setHorizontalPagination:NSAutoPagination];
NSAutoPagination opisano w Dokumentach jak:
NSAutoPagination Obraz dzieli się na równe wielkości prostokątów i umieszcza w kolumnie stron. Dostępne w systemie Mac OS X 10.0 i nowszych. Zadeklarowane w NSPrintInfo.h.
Nie miało to żadnego wpływu na drukowany plik PDF.
Doskonała odpowiedź! Jeśli nikt inny nie wymyśli lepszej odpowiedzi w następnym dniu, przyznam ci nagrodę. Dzięki za pomoc. – Daniel
Cóż, nie będę się budzić przy końcu nagrody, więc wygrywasz! – Daniel
To mi pomogło. Niezła odpowiedź. –