#objective-c #pdf-generation #scrollview #multipage
#objective-c #генерация pdf #scrollview #многостраничный
Вопрос:
Я пишу приложение для iPad, которое использует scrollview с управлением страницей. Мне нужно создать PDF из всех страниц в виде 1 PDF-файла. До сих пор я полагал, что мне следует перебирать все вложенные представления (страницы) и создавать PDF-файлы для каждого (используя CGPDFContext). НО мне действительно нужно объединить все файлы в 1 PDF-документ. Можете ли вы помочь мне сделать это??
Или, если у вас есть лучший способ создать PDF-документ с несколькими страницами из этого scrollview, это было бы еще лучше!!
Пожалуйста, помогите. Я искал везде и увидел, что в Mac OS есть что-то, использующее PdfDocument, функцию insertPage. Я не могу найти аналогичный метод для iOS??
Ответ №1:
для создания многостраничного PDF:
-(CGContextRef) createPDFContext:(CGRect)inMediaBox path:(NSString *) path
{
CGContextRef myOutContext = NULL;
NSURL * url;
url = [NSURL fileURLWithPath:path];
if (url != NULL) {
myOutContext = CGPDFContextCreateWithURL (url,// 2
amp;inMediaBox,
NULL);
}
return myOutContext;// 4
}
-(void)createPdfFromScrollview:(UIScrollView *)scrollview
{
CGContextRef pdfContext = [self createPDFContext:CGRectMake(0, 0, WIDTH, HEIGHT) path:outputFilePath];
for(UIView * view in scrollview.subviews)
{
CGContextBeginPage (pdfContext,nil);
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformMakeTranslation(0, HEIGHT);
transform = CGAffineTransformScale(transform, 1.0, -1.0);
CGContextConcatCTM(pdfContext, transform);
//Draw view into PDF
[view.layer renderInContext:pdfContext];
CGContextEndPage (pdfContext);
}
CGContextRelease (pdfContext);
}
Надеюсь, это поможет.