如果可以从 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去除白色背景。

从 asp.net 中的字节生成 pdf [关闭]

如何以 PDF 格式获取 UITableView 的快照

如何从 Google 的 appengine 动态生成 pdf?

是否可以使用 PhantomJS 和 Node 从模板动态生成 PDF?