我想使用Quartz2D从UICollectionView生成PDF。 collectionView有很多单元格,每个单元格是一个全屏视图。我可以生成PDF,但尺寸太大。我生成了8页pdf,大小为2.8M。一般来说,我会有超过40个单元格,pdf大小将超过20M。我想将这个pdf发送给使用电子邮件的其他人,而且它太大了,就像电子邮件中的附件一样。
同时,当我在自己的MBP上打开pdf时,它看起来不错。但是当我在PC上打开它时,它看起来很糟糕。
抱歉我的英语,我不是母语人士,如果我的描述中有任何不清楚的地方,请在下面发表评论,谢谢。
这是我的代码:
dispatch_queue_t queue = dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0);
NSMutableData *pdfData = [NSMutableData data];
dispatch_async(queue, ^{
UIGraphicsBeginPDFContextToData(pdfData, CGRectMake(0.0f, 0.0f, 198.0f, 153.0f), nil);
for (NSInteger section = 0; section < [self.collectionView numberOfSections]; section++) {
for (NSInteger item = 0; item < [self.collectionView numberOfItemsInSection:section]; item++) {
UICollectionViewCell *cell = [self collectionView:self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:item inSection:section]];
[self addPrintingViewPDF:cell.contentView];
}
}
UIGraphicsEndPDFContext();
});
- (void)addPrintingViewPDF:(UIView*)printingView {
// Mark the beginning of a new page.
UIGraphicsBeginPDFPage();
CGContextRef pdfContext = UIGraphicsGetCurrentContext();
// Scale down from 1024x768 to fit paper output (792x612; 792/1024 = 0.773)
CGContextScaleCTM(pdfContext, 0.193f, 0.199f);
[printingView.layer renderInContext:pdfContext];
}