如果可以从 UITableView 生成 PDF 文件?
Posted
技术标签:
【中文标题】如果可以从 UITableView 生成 PDF 文件?【英文标题】:If it's possible to generate a PDF file from a UITableView? 【发布时间】:2011-08-09 04:16:01 【问题描述】:我的应用程序有一个带有自定义单元格的表格视图(包括文本字段、标签和按钮),我想从表格视图生成一个 pdf 文件。
下面是代码(现在假设tableview的内容都是可见的):
UIGraphicsBeginImageContext(self._tableView.bounds.size);
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, self._tableView.bounds.size.width, self._tableView.bounds.size.height), nil);
// what's the code here?
// [self._tableView drawInRect:];
UIGraphicsEndPDFContext();
我总是生成一个空白的 pdf 文件。 目前我所做的是将tableview生成为图像,然后将图像绘制到当前上下文,然后将获取pdf文件。但是有什么好主意吗?
【问题讨论】:
【参考方案1】:为了获得高质量的图像,
使用
UIGraphicsBeginImageContextWithOptions(screenRect.size, NO, 0.0)
而不是
UIGraphicsBeginImageContext(screenRect.size)
@JeffWood:感谢一百万,您的回答:)
【讨论】:
【参考方案2】:您好,您可以通过以下代码将当前视图转换为图像,然后您必须使用该图像通过link创建PDF文件
- (UIImage *)captureView:(UIView *)view
CGRect screenRect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(screenRect.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor blackColor] set];
CGContextFillRect(ctx, screenRect);
[view.layer renderInContext:ctx];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
【讨论】:
这是我非常喜欢 Cocoa 和 CoreGraphics 的那种东西——原语和更高级别的操作和类型很好地结合在一起。在做一些严肃的 UIView 子类化之前,我从来没有真正欣赏过有状态的图形系统(即 postscript)。 谢谢,我得到了这个工作,但我想如果 tableview 的内容大于 tableview,如何捕获整个 tableview? Dio,如果它有效,请勾选答案并放弃投票..它将对其他人有所帮助.. 是的,,, 当桌面高度在 iphone 和 1024 ipad 中低于 480 时,您是正确的,但是当 iphone 的大小超过 480,ipad 的大小超过 1024 时怎么办...这里我不要考虑表格框架中的导航栏和标签栏.. 我们只能生成UItableview可见的rects。以上是关于如果可以从 UITableView 生成 PDF 文件?的主要内容,如果未能解决你的问题,请参考以下文章
从 UIScrollView + iphone 生成 PDF
从PS中创建PDF时,用Ghostscript去除白色背景。