2014-11-09 4 views
2

создать PDF-файл из моей UITableView, используя этот код:TableView в формате 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 и для примера Title (на первой странице) и Footer для каждой страницы.

Я совершенно новый, используя этот PDF-экспорт, я не могу найти способ решить эту проблему. Может ли кто-нибудь помочь мне или привести меня в правильное направление?

Любая помощь была бы очень восприимчивой.

+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) 
Смежные вопросы