TableView到PDF将填充添加到页面

时间:2014-11-09 23:30:06

标签: ios uitableview pdf swift

我使用此代码从我的UITableView创建PDF文件:

var priorBounds:CGRect = self.tableView.bounds;

var fittedSize:CGSize = self.tableView.sizeThatFits(CGSizeMake(priorBounds.size.width, self.tableView.contentSize.height))
self.tableView.bounds = CGRectMake(0, 0, fittedSize.width, fittedSize.height);

var pdfPageBounds:CGRect = CGRectMake(0, 0, 792, 612); // Change this as your need
var pdfData = NSMutableData()

UIGraphicsBeginPDFContextToData(pdfData, pdfPageBounds, nil)

for var pageOriginY:CGFloat = 0; pageOriginY < fittedSize.height; pageOriginY += pdfPageBounds.size.height {

    UIGraphicsBeginPDFPageWithInfo(pdfPageBounds, nil);       
    CGContextSaveGState(UIGraphicsGetCurrentContext());      
    CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0, -pageOriginY)
    self.tableView.layer.renderInContext(UIGraphicsGetCurrentContext())
}

UIGraphicsEndPDFContext();

self.tableView.bounds = priorBounds; // Reset the tableView

let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
var pdfFileName = path.stringByAppendingPathComponent("testfilewnew.pdf")

pdfData.writeToFile(pdfFileName, atomically: true)

它工作正常,但PDF填写了我的PDF的整个页面。我想添加一个Padding,例如一个标题(在第一页上)和一个页脚到每个页面。

我使用这个PDF导出很新,我无法找到解决方法。任何人都可以帮助我,或者让我走向正确的方向吗?

任何帮助都会受到极大的关注。

1 个答案:

答案 0 :(得分:0)

您希望通过创建宽度和高度略小于表格的表格来创建适合页面的表格。 试试这个:

let paperA4 = CGRect(x: -25, y: 25, width: 612, height: 892);
let pageWithMargin = CGRect(x: 0, y: 0, width: paperA4.width-50, height: paperA4.height-50);

        var fittedSize:CGSize = self.tableView.sizeThatFits(CGSizeMake(pageWithMargin.width, self.tableView.contentSize.height))
        self.tableView.bounds = CGRectMake(0, 0, fittedSize.size.width, fittedSize.height);

        var pdfData = NSMutableData()


        UIGraphicsBeginPDFContextToData(pdfData, paperA4, nil)

        for var pageOriginY:CGFloat = 0; pageOriginY < fittedSize.height; pageOriginY += paperA4.size.height {

            UIGraphicsBeginPDFPageWithInfo(paperA4, nil);

            CGContextSaveGState(UIGraphicsGetCurrentContext());

            CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0, -pageOriginY)

            self.tableView.layer.renderInContext(UIGraphicsGetCurrentContext())
        }

        UIGraphicsEndPDFContext();

        self.tableView.bounds = pageWithMargin; // Reset the tableView


        let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
        var pdfFileName = path.stringByAppendingPathComponent("testfilewnew.pdf")

        pdfData.writeToFile(pdfFileName, atomically: true)